2012-07-16 20 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