Ember.js EMBERJS2动态路由

Ember.js EMBERJS2动态路由,ember.js,ember-data,ember-data-url-templates,Ember.js,Ember Data,Ember Data Url Templates,我正在尝试设置一种方法来动态定义路由、它们的模板和模型。余烬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_thr

我正在尝试设置一种方法来动态定义路由、它们的模板和模型。余烬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中指定模板,但这不是动态的。

默认情况下,Ember的路由和模板方法是使用内置模板来处理来自后端的数据布局。但是,完全有可能执行类似的操作,最终您的CMS页面显示在/page/:slug:

//app/router.js

Router.map(function () {
  this.route('page', { path: '/:post_id' });
});
执行上述操作将允许您设置页面路径,以处理从CMS检索适当数据的操作,然后将其显示在page.hbs中,并可选择使用任何附加HTML将其包装,以使其在Ember中正常工作

下面是一个执行类似操作的Ember附加组件的示例。它还有一个可运行的测试应用程序,设计用于Wordpress后端,您可以在此学习:


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

一般来说,使用默认的余烬方法更简单,你在这里做什么?我想动态地定义路线和模板,以便可以从CMS定制页面。因此,在通过CMS添加之前,路径是未知的。难道灰烬根本就不是为此而建的吗?