Angular.js 过滤器参数中的插值
Angular.js interpolation in filter parameter
我在 ng-repeat
上有一个过滤器,它接受一个参数。它目前适用于字符串。
<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>
如果你想使用一些 ng-model
过滤器,那么你可以只使用 model
名称。无需使用 {{}}
表达式。
在您的情况下,它将是:
<div ng-cloak ng-repeat="(key, value) in searchData | aboutFilter:list.api">
请记住,在您的过滤器中,您使用的是字符串比较。因此过滤器将检查精确匹配。
此外,在您的过滤器中:
您正在比较 key
与 input list.api
。这里的键永远是 0,1, etc
索引。您必须在那里使用 value
而不是 key
我在 ng-repeat
上有一个过滤器,它接受一个参数。它目前适用于字符串。
<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>
如果你想使用一些 ng-model
过滤器,那么你可以只使用 model
名称。无需使用 {{}}
表达式。
在您的情况下,它将是:
<div ng-cloak ng-repeat="(key, value) in searchData | aboutFilter:list.api">
请记住,在您的过滤器中,您使用的是字符串比较。因此过滤器将检查精确匹配。
此外,在您的过滤器中:
您正在比较 key
与 input list.api
。这里的键永远是 0,1, etc
索引。您必须在那里使用 value
而不是 key