5

कोणीय संस्करण 1.2.15 का उपयोग करके, मुझे एक बग मिला जो संस्करण 1.2.2 पर 1.2.15 तक शुरू हुआ।ngClassOdd/ngClassEven अपेक्षित काम नहीं कर रहे

Plunker Demo to reproduce

एचटीएमएल

<body ng-app=""> 
    <ol ng-init="names=['John', 'Mary', 'Cate', 'Suz','Felipe','Vero']"> 
    <li ng-repeat="name in names"> 
     <span ng-class-odd="'shared odd'" ng-class-even="'shared even'"> 
     {{name}} 
     </span> 
    </li> 
    </ol> 
</body 

सीएसएस

.shared {color: red;} 
.even{ background-color:yellow; } 
.odd{ background-color:white; } 

आप कैसे अजीब शैली 3 तत्व पर काम नहीं करता देखेंगे।

क्या इस मुद्दे के लिए कोई समाधान है?

यदि नहीं, तो अधिक समझदारी अपग्रेड या डाउनग्रेड करने के लिए क्या नहीं होगा?

+0

ऐसा लगता है कि यह केवल तभी काम करता है जब शैली में से कोई एक लागू हो। एक संभावित कामकाज भी शैली को डिफ़ॉल्ट रूप से सेट करना है और फिर विषम पंक्तियों (या इसके विपरीत) के लिए इसे बदलना है। –

उत्तर

18

साथ संयोजन के रूप में उपयोग करने के लिए ng-class यह एक ज्ञात बग था और तय किया गया है, तो क्यों v1.2.16 को अद्यतन नहीं हो सकता है?
यह v1.2.16 पर अपेक्षा के अनुसार काम करता है।

आप v1.2.15 पर रहने के लिए आप या तो मॉर्गन समाधान (ng-class + $index) का उपयोग करना चाहिए चाहते हैं, या ngClassOdd/ngClassEven में केवल एक ही वर्ग में शामिल हैं:

<span class="shared" ng-class-odd="'odd'" ng-class-even="'even'"> 

Btw, वहाँ कोई तोड़ने परिवर्तन किया गया संस्करण 1.2.16 में (changelog के अनुसार), इसलिए उन्नयन पूरी तरह से पारदर्शी होना चाहिए।


अद्यतन:

पूर्णता, मैं वहाँ ngRepeat के $even/$odd गुण उपयोग करने का विकल्प है उल्लेख करना चाहिए की खातिर। उदाहरण के लिए:

<span ng-class="$even?'shared odd':'shared even'"> 

नोट:
के बाद से आइटम की सूची ngRepeat द्वारा प्रदर्शित है 0-आधारित, 1 तत्व ($index: 0) अजीब माना जाता है, हम (मनुष्य) को 1 तत्व की उम्मीद है, जबकि यहां तक ​​कि माना जा सकता है। तो, सुनिश्चित करें कि आप कक्षाओं को "उलटा" लागू करते हैं।
ngClass + $index दृष्टिकोण के लिए भी यही सच है।


सुझाए गए समाधान अभी भी v1.2.16 को उन्नत करने के लिए है।
बस here is a plunkr सभी 3 v1.2.15 समाधान के साथ।

+0

ठीक है मुझे लगता है कि उसे वह विकल्प मिल गया है जो वह अब ढूंढ रहा है, मैं यह देखने के लिए उत्सुक हूं कि वह क्या चुनता है। –

+1

@ मॉर्गनडेलेनी: हम 'ngRepeat' द्वारा उजागर' '' '' '' 'odd' गुणों के बारे में भूल गए थे। मुझे लगता है कि ** अब ** ओपी में सभी उपलब्ध विकल्प हैं :) – gkalpak

+0

ऐसा लगता है कि अपग्रेडिंग सुरक्षित/सही दृष्टिकोण है क्योंकि यह मामूली अपग्रेड – Dalorzo

0
**The value of `ng-class-odd` and `ng-class-even` can be a string: `ng-class-odd="'myClass'"` or an expression `ng-class-odd="{myClass: boolExpression}"`** 

Also: 

**Angular 1.2+**: `ng-class="{even: $even, odd: $odd}"` 

    <ul> 
     <li ng-repeat="name in names"> 
      <span> ng-class="{even: $shared even, odd: `enter code here`$shared odd}">{{name}}</span> 

     </tr> 
    </ul> 
    <hr /> 

**Angular < 1.2** `ng-class="{even: !($index%2), odd: ($index%2)}"` 
+0

हम, यह एक और धागे की एक प्रतिलिपि और पेस्ट है: http://stackoverflow.com/questions/18725832/angular-js-ng-class-odd-in-nested-ng-repeats – DarkUrse

संबंधित मुद्दे