0

このモデルで

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')

これは、私が選択した答えと非常によく似ています。

ありがとうございました。

4

1 に答える 1

2

テンプレートに次のinputようなヘルパーがあるとします。

{{input type="text" value=searchText placeholder="Search..."}}

searchTextさらに、テキストフィールドで指定されたものに応じてフィルタリングする必要があるアイテムのリストがあると仮定します:

<ul>
{{#each place in searchResults}}
  <li><strong>{{place.name}}</strong></li>
{{/each}}
</ul>

そして、ヘルパーの にバインドされているプロパティが変更されるたびにcontent(ヘルパーを再呼び出しして)をフィルター処理するサンプル コントローラー:eachsearchTextvalueinput

App.PlacesController = Ember.ArrayController.extend({
  searchText: '',
  searchResults: function() {
    var searchText = this.get('searchText');
    var regExPattern = '\\b'+searchText+'\\b'; 
    var regexp = new RegExp(regExPattern,'gi');
    return this.get('content').filter(function(place){
      return place.get('name').match(regexp);
    });
  }.property('searchText')
});

注: 検索テキストをプロパティ値と一致させる方法は自由です。この例は、可能な方法の 1 つにすぎません。

実際のデモについては、こちらを参照してください。

それが役に立てば幸い。

于 2013-09-14T17:13:02.787 に答える