2012-07-16 23 views
2

我想在它已被顯示後對容器視圖進行排序。但是,由於數組的長度不變,但只是順序,視圖不會刷新。有關如何強制視圖重新渲染的最佳做法嗎?刷新容器視圖上排序

+2

http://stackoverflow.com/questions/11352646/ember-js-collectionview-order和http://stackoverflow.com/questions/11205013/ember-js-each-order - 應該爲你的財產:) – 2012-07-16 21:11:51

回答

6

如果您從Embers GitHub頁面獲取最新版本:https://github.com/emberjs/ember.js/downloads它包含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