5

में स्ट्रिंग तुलना मैं AngularJS में दो तारों की तुलना करने की कोशिश कर रहा हूं, और मैंने उदाहरण ऑनलाइन देखे हैं। जैसा कि मैं इसे समझता हूं, आप angular.equals (str1, str2) का उपयोग कर सकते हैं, आप === का उपयोग कर सकते हैं, आप == का उपयोग कर सकते हैं यदि आप सुनिश्चित हैं कि दोनों तार हैं ...AngularJS

मैंने सभी को आजमाया है तीन, लेकिन मुझे परिणाम नहीं मिला। मैंने जो किया है उसमें कुछ गलत होना चाहिए, लेकिन मुझे नहीं पता कि यह क्या है।

जब मैं कोड चलाता हूं, inc1() फ़ंक्शन को कॉल किया जाता है। पहली चेतावनी "inc1 कहा जाता है" दिखाई देता है। लेकिन दूसरी चेतावनी, "लूप के अंदर", केवल एक बार निष्पादित करता है। इसे दो बार निष्पादित करना चाहिए, है ना?

और अगर (स्थिति) के अंदर चेतावनी बिल्कुल निष्पादित नहीं होती है। अगर मैं 'if' ब्लॉक को हटा देता हूं, तो "लूप के अंदर" चेतावनी दो बार चलती है।

अगर कोई मुझे बता सकता है कि मैं यहां क्या कर रहा हूं तो मुझे बहुत बाध्य होना होगा। मैंने angular.equals(), === और == का उपयोग किया है, लेकिन वही बात हर बार होती है।

एचटीएमएल:

<a class="tab-item" ng-repeat = "x in items" ng-if="name==x.names" ng-click="inc1(name)"> 
    <i class="icon ion-thumbsup"></i> 
    Like 
</a> 

AngularJS:

$rootScope.items = [ 
{ id: 1, names: 'Dolphin', image: 'dolphin.jpg'}, { id: 2, names: 'Donkey', image: 'donkey.jpg'}]; 

$scope.inc1 = function(name) { 

alert("inc1 called"); 
for(var i=0;i<$rootScope.items.length;i++) 
{ 
    alert("Inside for loop"); 
    if (name === $rootScope.items.names[i]) 
     { 
     alert("If condition satisfied"); 
     } 
} 
} 

// कहो, नाम है 'डॉल्फिन'

+0

अलर्ट शायद डीबग करने का एक शानदार तरीका नहीं है, तो क्रोम https://developer.chrome.com/devtools/docs/javascript-debugging में डिबगिंग की जांच करना या कंसोल पर कम से कम लॉग इन करना उपयोगी हो सकता है https: // developer.chrome.com/devtools/docs/console#writing-to-the-console – Cameron

+0

ओह ठीक है धन्यवाद! मैं इसे देख लूँगा! :) – Anusha

उत्तर

6

आप

यह कैसे HTML और AngularJS कोड जाना है गलत नोड पर पुनरावृत्त कर रहे हैं :)

for(var i=0;i<$rootScope.items.length;i++) 
{ 
    alert("Inside for loop"); 
    if (name === $rootScope.items[i].names) // you iterate over items, not names, which it an Json property inside item 
     { 
     alert("If condition satisfied"); 
     } 
} 
+0

आह !!! तो क्या आप यह कैसे करते हैं? अब यह समझ में आता है! : डी मैंने सोचा था कि आपको आइटम करना था। नाम [i] !! धन्यवाद!! अब यह काम कर रहा है!! ;) – Anusha

+0

यदि ओटी आपके लिए काम करता है तो आप इस मुद्दे को बंद कर सकते हैं :) सभी बंद कार्यों को साफ रखने के लिए। मदद करने में प्रसन्न रहें :) – Beri

2

आप $ rootScope.items [i] .name बजाय $ rootScope.items.names [i] के साथ तुलना किया जाना चाहिए

+0

हाँ, धन्यवाद! मुझे एहसास होना चाहिए था कि मैंने क्या नहीं किया था: डी – Anusha

0

समस्या यह है कि नाम allways अपरिभाषित $ scope.name परिभाषित नहीं है है । एनजी-क्लिक = "inc1 (name)" के बजाय दृश्य में ng-click = "inc1 (x.name)" डालें।