EmberJS 2动态路由

时间:2017-10-20 16:07:23

标签: ember.js ember-data ember-data-url-templates

我试图设置一种动态定义路线,模板和模型的方法。 (Ember 2.16.0)

到目前为止,我有这个:

// app/router.js
Router.map(function () {

    let routes = [
        {route: "page_one", templateName: "default.hbs"},
        {route: "page_two", templateName: "default.hbs"},
        {route: "page_three", templateName: "custom.hbs"}
    ];

    routes.forEach(function (key) {
        this.route(key.route);
    }, this);
});

这很有效,如果模板文件存在,我可以加载页面。

我想更进一步,在这里定义模板名称,例如我希望它们全部使用" default.hbs"以及为它们动态加载模型。

EmberJS中有可能出现这种情况吗?如果是这样的话,我应该考虑哪些文件。

我知道你可以在相应的路线文件中指定模板" app / routes / page_one.js"但这不会是动态的。

1 个答案:

答案 0 :(得分:1)

默认情况下,Ember的路由和模板方法是使用内置模板来处理来自后端的数据布局。完全有可能做到这样的事情然后最终显示您的CMS页面显示在/page/:slug

// app / router.js

Router.map(function () {
  this.route('page', { path: '/:post_id' });
});

执行上述操作后,您可以设置page路由以处理从CMS中检索相应数据,然后将其显示在page.hbs中(可选择使用任何其他HTML进行包装)使其在Ember中运作良好。)

这是Ember附加组件的一个例子。 https://github.com/oskarrough/ember-wordpress它还有一个工作测试应用程序,旨在对抗您可以在此学习的Wordpress后端:https://github.com/oskarrough/ember-wordpress/tree/master/tests/dummy

您还可以采取其他方法,但这可能是最简单的方法。这有帮助吗?