3

私は 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 つしかありません。表示する動的ビューが複数ある場合、どうすればよいですか?
4

1 に答える 1

2
  • 私にとって、これはかなり良さそうです。状態の作成とコントローラーについて...ここにははい/いいえの答えはありません。通常、コンテキスト ロジックごとにコントローラーを作成し、新しいアプリケーションの状態を処理する場合はルートを作成します。あなたの例では、カテゴリ(すべてのカテゴリの概要を示す状態)、表示(特定のカテゴリを表示する)を使用して、うまくやっています...

  • ここで質問は何ですか?申し訳ありませんが、ここで知りたいことがわかりません。

  • ここでの答えは簡単です。ページに表示する動的ビューが複数ある場合は、名前付きアウトレットを使用して、複数の {{outlets}} を使用できます。参照: Ember.js Router App Architecture -- 複数の入れ子になったビュー/コントローラーのペアを持つ方法

于 2012-10-25T07:00:30.557 に答える