一起使用computed.filter和computed.sort的问题

时间:2014-10-20 14:42:31

标签: ember.js

EmberJS forums

交叉发布

在我的应用中,我需要按一个或多个属性过滤列表,然后按一个或多个属性对过滤后的结果进行排序。我用

完成了这个
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')

模板通过普通sortedContent

绑定到{{#each item in sortedContent}}

尝试编辑该列表中的项目时出现问题。编辑列表中的前两项很好 - 更改字段会显示列表中的更改而不会出现任何问题。编辑低于前两项的任何内容时出现问题。任何更改都会反映在正确的项目以及列表中的其他项目中。

I've created a jsbin that shows the issue。我不确定我是否只是遗漏了我如何过滤/排序/绑定或者这是否是Ember中的错误。

1 个答案:

答案 0 :(得分:1)

我修复了它,可能就像你使用错误的过滤器/排序一样。

您的固定和简化控制器:

App.ApplicationController = Ember.ArrayController.extend({
  sortProperties: ['manufacturer', 'modelName', 'series'],
  filteredContent: function() {
    return this.get('arrangedContent').filterBy('isActive');
  }.property('@each.isActive')
});

我还将模板映射到filteredContent而不是sortedContent

最后两个对象具有相同的ID(不会导致问题,但仍然......)

工作jsbin