2

我正在尝试在 containerView 已经显示后对其进行排序。但是,由于数组的长度不会改变,而只是顺序改变,因此视图不会刷新。是否有关于如何强制视图重新渲染的最佳实践?

4

1 回答 1

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...
}

然后你绑定你的视图你的控制器的排列内容属性,如下所示:

{{#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

编辑:您可以在 GitHub 上看到 HS.BlogPostListController 的运行情况:https ://github.com/joachimhs/haagen-software.no/blob/master/app/controllers.js

于 2012-07-16T21:15:27.510 回答