交叉发布在EmberJS论坛
在我的应用程序中,我需要按一个或多个属性筛选列表,然后按一个或者多个属性对筛选结果进行排序。我已经用实现了这一点
sortProperties: ['manufacturer:asc', 'modelName:asc', 'series:asc'],
filteredContent: Ember.computed.filter('model', function (model) {
return model.get('isActive');
}).property('model.@each.isActive'),
sortedContent: Ember.computed.sort('filteredContent', 'sortProperties').property('filteredContent')
模板通过正常的{{#each item in sortedContent}}
与sortedContent
结合
当试图编辑该列表中的项目时,我会遇到问题。编辑列表中的前两项是可以的——更改字段可以毫无问题地显示列表中的更改。当编辑任何低于前两项的内容时,问题就会出现。任何更改都会反映在正确的项目以及列表中的其他项目上。
我已经创建了一个显示该问题的jsbin。我不确定我是否只是在过滤/排序/绑定方面遗漏了什么,或者这是否是Ember中的一个错误。
我修复了它,可能是你使用过滤器/排序的方式有问题。
您的固定和简化控制器:
App.ApplicationController = Ember.ArrayController.extend({
sortProperties: ['manufacturer', 'modelName', 'series'],
filteredContent: function() {
return this.get('arrangedContent').filterBy('isActive');
}.property('@each.isActive')
});
我还将模板映射到filteredContent
上的循环,而不是sortedContent
最后,两个对象具有相同的ID(没有引起问题,但仍然…)
正在工作的jsbin