2015-04-01 39 views
3

我在ng-repeat上有一個過濾器,它接受一個參數。它目前與一個字符串一起工作。在過濾器參數中的Angular.js插值

<div ng-repeat="(key, value) in searchData | aboutFilter:'abo'"> 

是否可以使用插值來代替字符串?

<div ng-repeat="(key, value) in searchData | aboutFilter:'{{list.api}}'"> 

這裏是我的過濾器:

app.filter('aboutFilter', function() { 
return function(items, input) { 
    var filtered = []; 
    angular.forEach(items, function (value,key) { 

     if(key===input){    
     filtered.push(value); 
     } 
    }); 
    return filtered; 
} 
}); 

下面是完整的模板邏輯:

<ul ng-repeat="list in englishList"> 

    <a ng-class="{{list.title}}Hide" mobile-search-slide href="/about"><li><p>{{list.title}}</p><i class="fa fa-chevron-right"></i></li></a> 

    <ul id="hideMe" ng-class="'hide{{list.title}}'">   
    <div ng-cloak ng-repeat="(key, value) in searchData | aboutFilter:'{{list.api}}'"> 

    <div ng-repeat="result in value" ng-class-odd="'odd'" ng-class-even="'even'"> 
    <a ng-href="{{value.title}}/{{result.shortname}}"> 
     <li> 
      <p>{{result.title}}</p><i class="fa fa-chevron-right"></i> 
     </li> 
    </a> 
    </div> 

    </div> 
    </li> 
    </ul> 
</ul> 
+1

刪除括號 - 只是約過濾器:list.api – 2015-04-01 18:06:46

+0

這似乎不工作的原因。 – byrdr 2015-04-01 18:10:22

+0

@byrdr你是否也刪除了單引號?它怎麼不工作? – 2015-04-01 18:25:14

回答

3

如果你想使用一些ng-model的過濾器,那麼你可以使用model名稱。不需要使用{{}}表達式。

你的情況,這將是:

<div ng-cloak ng-repeat="(key, value) in searchData | aboutFilter:list.api"> 

DEMO

記得在你的過濾器,您使用的字符串比較。所以過濾器將檢查完全匹配。

而且也是,在你的過濾器:

您與input list.api比較key。這裏的關鍵將始終是0,1, etc索引。你必須使用value而不是key