2014-10-06 5 views
6

मैं वर्तमान श्रेणी की मूल श्रेणी के विकल्पों के रूप में कई विकल्प दिखाने के लिए कोणीय एनजी-विकल्प का उपयोग कर रहा हूं, मूल रूप से इन विकल्पों में सभी मौजूदा श्रेणियां हैं, और मुझे बाहर करने की आवश्यकता है एनजी-विकल्प से वर्तमान श्रेणी, जो काफी समझ में आता है क्योंकि एक श्रेणी खुद की मूल श्रेणी नहीं हो सकती है। तो मैं यह कैसे करूँ? वर्तमान में मेरे पास निम्न कोड है:विशिष्ट ऑब्जेक्ट को बाहर करने के लिए AngularJS 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> 

उत्तर

24

आपको फ़िल्टर का उपयोग करना चाहिए।

<select ng-options="everyCategory.name for everyCategory in allCategories | filter: { name: '!' + category.name }">...</select> 
+0

एक आकर्षण की तरह काम करता है। धन्यवाद, मैं दोनों को सही उत्तर – dulan

+0

के रूप में स्वीकार कर रहा हूं, मुझे लगता है कि इसमें कोई समस्या है, मान लीजिए कि वर्तमान श्रेणी का नाम 'घोड़ा' है, इस फ़िल्टर का उपयोग करके इन दोनों श्रेणियों को फ़िल्टर करते हुए 'व्हाइट हॉर्स' नामक एक और श्रेणी है, लेकिन मैं जो चाहता हूं वह केवल वर्तमान श्रेणी को फ़िल्टर करना है जो 'घोड़ा' है। – dulan

+1

इसे देखें: http://stackoverflow.com/questions/18242520/exact-filter-in-angular/18243147#18243147 –

1

आप एक फिल्टर

<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> 

मैं यह कैसे उपयोग करने के लिए की एक उदाहरण के साथ एक छोटी सी बेला बना लिया है इस्तेमाल कर सकते हैं: के लिए @Krause और @Kamil आर http://jsfiddle.net/krausekjaer/tnqrqk2w/3/

+0

एक आकर्षण की तरह काम करता है! धन्यवाद, मैं दोनों को सही उत्तर के रूप में स्वीकार कर रहा हूं। – dulan

0

धन्यवाद उत्तर, फिर भी मुझे उनके समाधान का उपयोग करते समय एक समस्या मिली, जैसा कि मैंने पिछली टिप्पणियों में उल्लेख किया है, यदि एक नाम के साथ 2 श्रेणियां हैं, तो दूसरे के एक सबस्ट्रिंग के रूप में, फ़िल्टर दोनों को पार कर जाएगा। उदाहरण के लिए, जैसे विभाग: कैंडी candybar

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> 
0

इस

<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> 
संबंधित मुद्दे