[英]AngularJS ng-options to exclude specific object
我正在使用角度ng選項來顯示有幾個選項作為當前類別的父類別的選擇,基本上這些選項包含所有現有類別,我需要從ng-options中排除當前類別,這相當於因為某個類別不能是其自身的父類別。 那我該怎么做? 目前我有以下代碼:
<tr ng-repeat="category in allCategories">
<th ng-bind="category.name"></th>
<th>
<select ng-options="everyCategory.name for everyCategory in allCategories">
<option value="">Select parent category</option>
</select>
</th>
</tr>
你應該使用過濾器。
<select ng-options="everyCategory.name for everyCategory in allCategories | filter: { name: '!' + category.name }">...</select>
你可以使用過濾器
<tr ng-repeat="category in allCategories">
<th>{{category.name}}</th>
<th>
<select ng-options="everyCategory.name for everyCategory in allCategories | filter: {name: '!' + category.name}" ng-model="somthing">
<option value="">Select parent category</option>
</select>
</th>
</tr>
我創造了一個如何使用它的小小提琴: http : //jsfiddle.net/krausekjaer/tnqrqk2w/3/
感謝@Krause和@Kamil R的答案,但我在使用他們的解決方案時發現了一個問題,正如我在之前的評論中提到的,如果有兩個類別,其中一個名稱作為另一個名稱的子字符串,則過濾器將被刪除他們都。 例如,類別如: candy candybar Using
filter: { name: '!' + category.name }
會過濾掉它們,為了確保只有一個被過濾,我最終編寫了一個自定義過濾器:
app.filter('parentTaxonomyFilter', function(){
return function(items, name){
var arrayToReturn = [];
for (var i = 0; i < items.length; i ++){
if (items[i].name != name) {
arrayToReturn.push(items[i]);
}
}
return arrayToReturn;
};
});
在HTML中,我使用這樣的過濾器:
<select class="form-control" ng-init="taxonomy.parentTaxonomy=getParentTaxonomy(taxonomy)" ng-model="taxonomy.parentTaxonomy" ng-options="everyTaxonomy.name for everyTaxonomy in data.allTaxonomies|parentTaxonomyFilter:taxonomy.name">
<option value="">select parent taxonomy</option>
</select>
試試這個
<tr ng-repeat="category in allCategories">
<th>{{category.name}}</th>
<th>
<select ng-options="everyCategory.name for everyCategory in allCategories | filter: { name: '!' + category.name }" ng-model="somthing">...</select>
<option value="">Select parent category</option>
</select>
</th>
</tr>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.