3
我正在開發應用程序維護類別Ember.js,在類別列表視圖中,我們將在用戶單擊創建按鈕時動態顯示新的cateogry表單。採用Ember的路由器之前,我們使用以下機制:如何使用Router處理動態內容?
查看:
LCF.CategoriesView = Ember.View.extend({
templateName:'admin/app/templates/categories/list',
isNewVisible:false,
showNew:function() {
this.set('isNewVisible', true);
},
hideNew:function() {
this.set('isNewVisible', false);
}
});
模板:使用路由器
<div class="well well-small">
<a class="btn btn-primary" href="#" {{action "showNewCategory"}}>Create</a>
</div>
{{#if view.isNewVisible}}
{{view LCF.NewCategoryView}}
{{/if}}
後,該事件將由途徑來處理,我改變了代碼如下:
路由器:
categories:Em.Route.extend({
route:'/categories',
connectOutlets:function (router, context) {
router.get('applicationController').connectOutlet('categories', router.get('store').findAll(LCF.Category));
},
showNewCategory:function (router) {
router.transitionTo('categories.newCategory', {});
},
index:Ember.Route.extend({
route:'/'
}),
newCategory:Em.Route.extend({
route:'/new',
cancelEdit:function (router) {
router.transitionTo('categories.index');
},
connectOutlets:function (router, context) {
router.get('categoriesController').connectOutlet('editCategory', {});
router.get('editCategoryController').enterEditing();
}
})
模板:
<div class="well well-small">
<a class="btn btn-primary" href="#" {{action "showNewCategory"}}>Create</a>
</div>
{{outlet}}
它的工作原理。
我的問題是:
- 它是正確的方式來處理動態視圖?我們是否需要爲頁面中的每個浮動層創建一個狀態/控制器?
- 即使應用仍顯示類別,URL也會更改。
- 模板中只有一個{{outlet}},如果有幾個動態視圖可以顯示,該如何處理?
很酷,我會檢查它。 – renfake
不客氣。如果你能澄清你想要的第二點,我會試着回答:) –
對於問題2:傳統上,在rails應用程序中,我們將使用鏈接http:// xxx/categories來顯示所有類別,然後在同一頁面中,我們應該使用新的類別表單,在這種情況下,url不會更改。但是當我們使用ember的路由器時,在進入newCategory狀態後,url將變爲http:// xxx/categories/new(這是用於rails中的新頁面)。這看起來很醜。 – renfake