1

オブジェクトにバインドされたコントローラーがありcontentます。このオブジェクトは、さまざまなソースから非同期的にデータをロードします。ロードが完了したときにデータをレンダリングしたい。これは問題なく動作しますが、データを変更したい場合、#each ブロックはデータを再レンダリングしません。

App.PopularTracks = Ember.Object.create({
    tracks: [],
    load: function() {
        var self = this;
        var tracks = [];

        LFM.get("chart.getHypedTracks", {limit: 5}, function(data) {
            // push each track to tracks in a loop, then
            self.set("tracks", tracks);
        });

        // This method has also other asynchronous calls that work similar,
        // but #each block doesn't rerender on `tracks` change.
    }
});

App.PopularTracksController = Ember.ArrayController.extend({
    contentBinding: "App.PopularTracks.tracks"
});

App.PopularTracksView = Ember.View.extend({
    templateName: "popularTracks"
});
4

1 に答える 1

0

あなたの例では、「self.set」は「this.set」であるべきですか?

また、通常のコントローラーのプロパティのようにコンテンツをターゲットにするのではなく、arrayController を使用して、コンテンツ パラメーターをターゲットにするだけです。

{{#each controller}}
    print this for every item in the "content" array!
{{/each}}

次のようにすると:

{{#each controller.content}}

一部のプロパティとバインディングが正しく再レンダリングされない

于 2013-05-08T22:04:34.777 に答える