2017-10-20 115 views
0

我想设置一种方式来动态地定义路由,他们的模板和模型。 (恩伯2.16.0)EmberJS 2动态路由

到目前为止,我有这样的:

// 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”中指定模板,但这不会是动态的。

+0

通常情况下,使用默认的Ember方法处理事情会更简单,您在这里完成了什么工作? – acorncom

+0

我想动态定义路线和模板,以便可以从CMS自定义页面等。所以路线是未知的,直到通过CMS添加。 Ember是不是为此而建造的? – ayala

回答

1

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

//应用程序/ 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

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