1

ここでエンバー・ニュージャック。ArrayController を CollectionView にフックします。

// the ArrayController
App.Entities = Ember.ArrayController.create({
    content: Ember.A([
            {id: 1, name: "item 1"},
            {id: 2, name: "item 2"},
            ...
            {id: n, name: "item n"}
        ])
});

// the CollectionView
myView = Ember.CollectionView.create(
    contentBinding: "App.Entities",
    tagName: 'ul',
    itemViewClass: Ember.View.extend({
        template: Ember.Handlebars.compile('{{view.content.name}}')
    })
).appendTo("mySelector");

これは、予想どおり、私のプロパティで素晴らしいものを作成しulます。同様に、ポップ、プッシュ、リバースなどのすべての配列レベルの操作は素晴らしく機能します。

App.Entities.reverseObjects(); // Works!
App.Entities.popObject(); // Works!

ただし、配列のプロパティを更新できないようです。

App.Entities.objectAtContent(0).name = "new name" // I know this is wrong

余談ですが、後で配列操作を実行すると機能します。

App.Entities.reverseObjects(); // change is picked up!

質問: ArrayController 内のプロパティを更新する方法 (バインディングが更新されていることを確認しますか?)

ちなみに、myView.rerender() など、考えられることはすべて試しましたが、本来の動作に反しているため、何か間違ったことをしているだけだとわかっています

4

1 に答える 1

2

これが機能するかどうかを確認してくださいApp.Entities.objectAt(0).set('name', "New name")...行われた変更に対してバインディングが機能するには、配列にEmberオブジェクトが含まれている必要があります

于 2012-12-07T21:19:04.243 に答える