2016-04-19 5 views
5

मैं पागल हो रहा हूं। इस हैलो-संसार का उदाहरण क्या गलत है? मैं कोणीय 1.5.5 के साथ कुछ बुनियादी चीजों का परीक्षण करने की कोशिश कर रहा हूं।एनजी-दोहराना, फॉर-लूप और पुश

HTML:

<div ng-app="myApp" ng-controller="Ctrl"> 
    <h3>test 1:</h3> 
    <span ng-repeat="label in test(1)">{{label}}</span> 
    <h3>test 2:</h3> 
    <span ng-repeat="label in test(2)">{{label}}</span> 
</div> 

जे एस:

angular.module('myApp', []) 
    .controller('Ctrl', ['$scope', function ($scope) { 
    $scope.test = function(amount) { 
     var result = []; 
     result.push("1"); 
     for (var i = 0; i < amount; i++) { 
     result.push("2"); 
     } 
     result.push("3"); 
     return result; 
    }  
}]); 

JsFiddle: http://jsfiddle.net/d3v6vq7w/7/

Simpy पुट, पाश 1 पुनरावृत्तियों के साथ काम करता है, लेकिन नहीं के साथ उदाहरण के लिए कुछ भी नहीं है 2. मुद्रित हो जाता है। क्या देता है?

+1

एक सरणी एक समारोह से एक परिणाम है कि साथ एनजी-दोहराने का उपयोग कर, अच्छी तरह से काम नहीं करता। यहां अधिक जानकारी: http://stackoverflow.com/questions/12336897/how-to-loop-through-items-returned-by-a-function-with-ng-repeat – fikkatra

+0

आपको यहां पोस्ट करने से पहले अपना कंसोल पहले खोलना चाहिए था । यह एक साधारण डुप्लिकेट त्रुटि थी। –

+0

सही, लेकिन मुझे एहसास नहीं हुआ कि इस तरह से काम करता है। – longplay

उत्तर

4

आपके पास वापस आने वाले सरणी में डुप्लीकेट हैं। track by $index जोड़ना आपकी समस्या का समाधान करेगा।

<span ng-repeat="label in test(2) track by $index">{{label}}</span> 

फिडल - http://jsfiddle.net/ayay0d6u/

3

आपको त्रुटि संदेश पर एक नजर है, तो आप जवाब मिल जाएगा।

Error: ngRepeat:dupes Duplicate Key in Repeater Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: label in test(2), Duplicate key: string:2, Duplicate value: 2

From error page

Duplicate keys are banned because AngularJS uses keys to associate DOM nodes with items.

+0

आह, त्रुटि संदेश! : डी मैं अनजान था कि मैं उन्हें अपने ब्राउज़र के कंसोल में देख सकता था। – longplay

1

क्योंकि एक पुनरावर्तक में डुप्लिकेट की अनुमति नहीं है है कि। इस समस्या को हल करने के लिए 'ट्रैक द्वारा' अभिव्यक्ति का उपयोग करें।

आपके उदाहरण में, test2 रिटर्न [1,2,2,3] है जिसमें डुप्लिकेट तत्व है।

ऊपर दिए गए उदाहरण को $ इंडेक्स द्वारा ट्रैक का उपयोग करके हल किया जा सकता है।

आप कोणीय जे एस प्रलेखन उल्लेख कर सकते हैं: https://docs.angularjs.org/error/ngRepeat/dupes

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