gpt4 book ai didi

ember.js - 对 ArrayController 上的计算属性进行排序

转载 作者:行者123 更新时间:2023-12-04 14:29:24 25 4
gpt4 key购买 nike

我有以下 jsbin:http://jsbin.com/okoxim/4/edit

FilteredContent 是一个计算属性,用于过滤我的 Controller 的内容。我想知道如何对计算属性进行排序以及我可以改进代码的任何方法。

App.StudentsController = Ember.ArrayController.extend({
sortProperties: ['name'],
nameFilter: null,
filteredContent: function(){
if(!this.get('nameFilter')) return this.get('content');

var nameRegEx = new RegExp(this.get('nameFilter'), 'i');
return this.filter(function(item) {
return item.get('name').search(nameRegEx) !== -1;
});
}.property('nameFilter', '@each.name')
});

最佳答案

最简单的方法是将结果包装在 ArrayProxy 中哪个排序相同 sortProperties值。就像是,

filteredContent: function(){
var result;

if (!this.get('nameFilter')) {
result = this.get('content');
} else {
var nameRegEx = new RegExp(this.get('nameFilter'), 'i');
result = this.filter(function(item) {
return item.get('name').search(nameRegEx) !== -1;
});
}

var sortedResult = Em.ArrayProxy.createWithMixins(
Ember.SortableMixin,
{ content:result, sortProperties: this.sortProperties }
);

return sortedResult;
}.property('nameFilter', '@each.name')

这是更新的 jsbin .

另一种方法是制作 filteredContent一个明确的 ArrayProxy并对其进行过滤/排序。

关于ember.js - 对 ArrayController 上的计算属性进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17712594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com