2017-10-20 149 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

還有其他的方法,你可以採取以及,但這可能是最簡單的。這有幫助嗎?