簡體   English   中英

AngularJS ng-options用於排除特定對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM