0

ビューに複数のアウトレットがあり、各アウトレットが collectionView に接続されるアプリケーションのセクションを Ember で作成しようとしています。問題は、2 番目のアウトレットが最初のアウトレットの変数で「散らかる」ようになることです。

今私が取り組んでいるのはもっと複雑ですが 、単純化された問題のフィドルです。

3 つのハンドルバー テンプレートがあります。

{{outlet dogs}}
{{outlet cats}}

Cat:{{view.content.name}}

Dog:{{view.content.name}}

アプリケーション テンプレートのアウトレットは接続されています。

index:Em.Route.extend({
    route:'/',
    connectOutlets:function(router, context){

        router.get('applicationController').connectOutlet('cats', 'catsCollection');
        router.get('applicationController').connectOutlet('dogs', 'dogsCollection');
    }, 
})

次に、猫と犬の両方について、コンテンツを格納するオブジェクトを作成しました。

App.Cats = Em.Object.create({
    content:[{name:"Russian Blue"}, {name:"British Short Hair"}, {name:"Domestic Tabby"}]
});

コレクション ビュー:

App.CatsCollectionView = Em.CollectionView.extend({
    content:App.Cats.content,
    itemViewClass:'App.CatsView'
});

レンダリングするコレクション ビューのビュー クラス:

App.CatsView = Em.View.extend({
    templateName:"cats",
    init:function(){

    }
});

ただし、結果には、最初のアウトレットのコレクションの内容が 2 番目のアウトレットで繰り返されることが表示されます。

Dog:Huski
Dog:Samoid
Dog:Elkhound
HuskiSamoidElkhound
Cat:Russian Blue
Cat:British Short Hair
Cat:Domestic Tabby

では、これはどのように発生し、どのように修正できるのでしょうか?

4

1 に答える 1

0

init関数を何もオーバーライドしていません。デフォルトでは、Viewはinit自体を呼び出し、表示されないいくつかの凝った魔法を実行します。その関数を宣言することにより、それが呼び出されるのをブロックしました。本当に関数を含めたい場合は、更新されたjsfiddleに見られるように、関数の先頭でinit呼び出す必要があります。this._super();

this._super();継承されたオブジェクト(この場合は「View」オブジェクト)からinit関数を呼び出してから、追加のコードを実行します。

于 2013-02-11T11:12:36.057 に答える