![](/img/trans.png)
[英]Display list of object's child arrays containing dupes with 1 bullet per index using ng-repeat
[英]Filter object by child array in ng-repeat statement that uses track by $index to handle dupes
我有一個對象帶有3個等長子數組的narrow.searchedMenu
,我用ng-repeat
和track by $index
顯示,因為有一些重復的元素。
<ul>
<li ng-repeat="item in narrow.searchedMenu.description track by $index">
{{ narrow.searchedMenu.name[$index] }},
{{ narrow.searchedMenu.short_name[$index] }},
{{ narrow.searchedMenu.description[$index] }}</li>
</ul>
我需要能夠僅通過保留description
出現關鍵字的結果來過濾顯示的結果。 如果description
不符我想exlcude的name
和short_name
還有description
。
通常,我會使用類似以下的內容:
| filter{description:'chicken'}
附加到ng-repeat
語句的末尾。 但是,它似乎不適用於track by
。
嘗試時,它會在控制台上顯示此錯誤:
錯誤:[$ parse:syntax] http://errors.angularjs.org/1.5.8/ $ parse / syntax?p0 =%7B&p1 = is%20an%20unexpected%20token&p2 = 16&p3 = NaNndex%20%7C%filter% 7Bdescription%3A'chicken'%7D&p4 =%7Bdescription%3A'chicken'%7D
我嘗試了其他幾種可能的解決方案,但到目前為止還沒有運氣。
請注意, $scope
未注入到控制器中,如果嘗試使用自定義過濾器,則會出現以下錯誤:
“錯誤:[filter:notarray] errors.angularjs.org/1.5.8/filter/notarray?p0=0”;
最后一件事-我被告知要避免includes
它,因為它沒有得到足夠的支持(有人說過polyfill
是替代方法,但是我不確定它是否適用於此?)。
您可以使用附加到控制器中對象上的自定義過濾器, 只要您按照ng-repeat
的最后一條語句進行track by
。
控制器中的過濾器如下所示:
menu.chickenFilter = function(item) {
return (item.indexOf('chicken') > -1)
}
ng-repeat
將變為:
<li ng-repeat="item in narrow.searchedMenu.description | filter: narrow.chickenFilter track by $index">
{{ narrow.searchedMenu.name[$index] }},
{{ narrow.searchedMenu.short_name[$index] }},
{{ narrow.searchedMenu.description[$index] }}</li>
一起去
<ul>
<li ng-repeat="item in narrow.searchedMenu track by $index" ng-if="narrow.searchedMenu[$index].description.indexOf('chicken')>-1">
{{ narrow.searchedMenu.name[$index] }},
{{ narrow.searchedMenu.short_name[$index] }},
{{ narrow.searchedMenu.description[$index] }}</li>
</ul>
我在這里制造了一個矮人
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.