このモデルで
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」という名前の顧客がいた場合、これら 3 つが返されますか?
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')
これは、私が選択した答えと非常によく似ています。
ありがとうございました。