2

すでに表示された後、containerViewをソートしようとしています。ただし、配列の長さは変更されず、順序のみが変更されるため、ビューは更新されません。ビューを強制的に再レン​​ダリングする方法に関するベストプラクティスはありますか?

4

1 に答える 1

6

ここでEmbersGitHubページの最新のビルドを取得する場合:https ://github.com/emberjs/ember.js/downloadsには、Ember.ArrayControllerが含まれています。Ember.ArrayControllerはEmber.SortableMixinを使用します。

コントローラを次のように定義します。

HS.BlogPostsListController = Em.ArrayController.create({
    content: [],
    sortAscending: false,
    sortProperties: ['postDate'],
    //the rest of your controller definition...
}

次に、次のように、ビューをコントローラーのarrangedContentプロパティにバインドします。

{{#view MyApp.view contentBinding="HS.BlogPostListController.arrangedContent" ...}}

これにより、並べ替えが変更されたとき(sortAscendingまたはsortPropertiesプロパティを変更したとき)にビューが更新されたままになります。

最新のビルドをプルしたくない場合は、SortableMixinソースコードを見て、それを独自のアプリに組み込むことができるかどうかを確認する必要があります:https ://github.com/emberjs/ember.js/blob/master /packages/ember-runtime/lib/mixins/sortable.js

編集:HS.BlogPostListControllerの動作はGitHubで確認できます:https ://github.com/joachimhs/haagen-software.no/blob/master/app/controllers.js

于 2012-07-16T21:15:27.510 に答える