Friday, 15 March 2013

javascript - How to make ng-repeat work with a function returning a new object? -


मेरे HTML में, मेरे पास निम्न तत्व हैं:

  & lt; बटन एनजी-क्लिक = "Console.log (कुंजी)" एनजी-दोहराना = "(कुंजी, मान) getLsKeys () में $ इंडेक्स द्वारा ट्रैक" & gt;  

और मेरे जेएस में मेरे पास है:

  $ scope.getLsKeys = function () {return localStorageService.get ('accountKeys'); };  

स्थानीय भंडारण मान यहां देखा जा सकता है:

मैं जो कुछ भी करता हूं, मुझे हमेशा यह त्रुटि मिलती है:

  अनचाहे त्रुटि: [$ रूटस्स्कोप: इन्फ़डीग] 10 $ डाइजेस्ट () पुनरावृत्तियों तक पहुंचे। निरस्त किया जा रहा! पिछले 5 पुनरावृत्तियों में छिपे हुए पहरेदार: [[fn: $ watchCollectionWatch; newVal: 121; पुरानावैल: 118 "], [" एफएन: $ वॉच कलेक्शनवाच; न्यूवैल: 124; पुरानावॉल: 121 "], [" एफएन: $ वॉच कलेक्शनवाच; नया वॉलः 127: पुरानी वैल: 124 "], [" एफ एन: $ वॉच कलेक्शनवॉच; न्यूवैल: 130; पुरानावॉल: 127 "], [" एफएन: $ वॉच कलेक्शनवाच; न्यूवैल: 133; पुरानावॉल: 130 "]]   

मैं समझता हूं कि एनजी-दोहर सटीक वस्तु से मिलान करने की कोशिश करता है, जो हर बार अलग होगा और getLsKeys बनाता है और एक नया ऑब्जेक्ट देता है। मुझे समझ में नहीं आ रहा है कि "$ इंडेक्स द्वारा ट्रैक करें" इस समस्या को ठीक नहीं करता है; इस विशिष्ट समस्या को हल करने के लिए मेरी समझ, ट्रैक द्वारा लागू किया गया था क्या मैं गलत कर रहा हूं?

आपको पहले अपने ऑब्जेक्ट को किसी सरणी में बदलना चाहिए, उदाहरण के लिए

  var arr = []; Var obj = localStorageService.get ('accountKeys'); के लिए (var i में obj) {var item = obj [i]; Item.id = i; arr.push (आइटम); }  

फिर आप इस सरणी में एनजी-दोहराएं बाँध सकते हैं, और अनन्त पुनर्निर्देशन से बचने के लिए आप एक विशिष्ट पहचानकर्ता के अनुसार तत्व को ट्रैक कर सकते हैं (उदाहरण के लिए मैंने id यहां, अलग ईमेल पता शामिल है)

  & lt; बटन ng- क्लिक = "console.log (कुंजी)" एनजी-दोहराने = "आइटम getLsKeys () आइटम द्वारा ट्रैक करें। आईडी "& gt;  

नोट: यदि संभव हो तो getLsKeys के बाहर सरणी परिवर्तन करने के लिए ऑब्जेक्ट करने के लिए और अधिक प्रदर्शन करने वाला होगा, ताकि प्रत्येक पाचन चक्र पर फिर से किया न जाए ।


No comments:

Post a Comment