私は Ember.js によるアプリケーションを開発しています。アプリケーションはカテゴリを維持します。カテゴリのリスト ビューで、ユーザーが作成ボタンをクリックすると、新しいカテゴリ フォームが動的に表示されます。Ember のルーターを使用する前は、次のメカニズムを使用していました。
意見:
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}} が 1 つしかありません。表示する動的ビューが複数ある場合、どうすればよいですか?