将computed.filter和computed.sort一起使用时出现问题



交叉发布在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

最新更新