用这个模型
App.Customer = DS.Model.extend({
name: DS.attr('string' ),
postalCode: DS.attr('string' ),
});
这个控制器:
App.CustomersController = Em.ArrayController.extend({
searchText: null,
searchResults: function() {
var searchText = this.get('searchText');
var regex = new RegExp(searchText);
if (!searchText) { return this; }
return this.filterProperty('name',searchText);
}.property('searchText')
});
我可以过滤名称为 searchText 的客户列表
如何更改它以返回名称与 searchtext 匹配的客户列表(如果 searchText 是“foo”,并且列表中有客户名称为“foobar”、“fooinc”和“foo”,它将返回这三个?
我尝试使用 filter() 方法
return this.filter(function(item,index,enumerable){
// some code
});
但 item.name 始终未定义(对于数组中 100 个左右的项目中的每一个)
谢谢
更新
我得到了它与这个代码一起工作
searchResults: function() {
var searchText = this.get('searchText');
var self = this;
var patt1 = new RegExp(self.searchText,"i");
if (!searchText) { return this;}
return this.filter(function(item,index,enumerable){
var data = item.get('name');
return patt1.test(data);
});
}.property('searchText')
这与我选择的答案非常相似。
谢谢你。