सरणी पर दोहराने के बजाय बार-बार परिभाषित संख्या को दोहराएं?


417

क्या ng-repeatकिसी सरणी पर हमेशा पुनरावृति करने के बजाय परिभाषित समय की संख्या है?

उदाहरण के लिए, नीचे मैं सूची आइटम को 5 गुना के $scope.numberबराबर मानकर 5 गुना दिखाना चाहता हूं, ताकि प्रत्येक सूची आइटम में वृद्धि 1, 2, 3, 4, 5 जैसी हो।

वांछित परिणाम:

<ul>
   <li><span>1</span></li>
   <li><span>2</span></li>
   <li><span>3</span></li>
   <li><span>4</span></li>
   <li><span>5</span></li>
</ul>


जवाबों:


569

अपडेट (9/25/2018)

AngularJS के नए संस्करण (> = 1.3.0) आपको केवल एक चर (कोई फ़ंक्शन की आवश्यकता नहीं) के साथ ऐसा करने की अनुमति देते हैं:

<li ng-repeat="x in [].constructor(number) track by $index">
    <span>{{ $index+1 }}</span>
</li>
$scope.number = 5;

यह उस समय संभव नहीं था जब सवाल पहले पूछा गया था। इस अपडेट के लिए नीचे अपने उत्तर से @ निखिल नांबियार को श्रेय दें


मूल (5/29/2013)

फिलहाल, ng-repeatकेवल एक संग्रह को एक पैरामीटर के रूप में स्वीकार करता है, लेकिन आप ऐसा कर सकते हैं:

<li ng-repeat="i in getNumber(number)">
    <span>{{ $index+1 }}</span>
</li>

और अपने नियंत्रक में कहीं:

$scope.number = 5;
$scope.getNumber = function(num) {
    return new Array(num);   
}

यह आपको बदलने की अनुमति देगा $scope.number किसी भी संख्या में जैसा कि आप कृपया और अभी भी उस बंधन को बनाए रखें जिसे आप खोज रहे हैं।

EDIT (1/6/2014) - AngularJS के नए संस्करणों (> = 1.1.5) की आवश्यकता है track by $index:

<li ng-repeat="i in getNumber(number) track by $index">
    <span>{{ $index+1 }}</span>
</li>

यहां समान getNumberफ़ंक्शन का उपयोग करके कुछ सूचियों के साथ एक फ़िडेल है


मैं कई सूची आइटम के लिए इसका उपयोग कर रहा हूं लेकिन यह केवल पहली सूची के लिए काम करता है। क्या आप जानते हैं कि ऐसा क्यों है?
मल्क्रिच

यह किसी भी संख्या में सूचियों के लिए काम करना चाहिए। इस बेला की
दान

1
एक बार फिर धन्यवाद। मैं मूल तत्व पर एनजी-रिपीट को हटाना भूल गया। अब यह काम कर रहा है। धन्यवाद।
माल्क्री

3
$ गुंजाइश.गेटनंबर = फ़ंक्शन (संख्या) {var x = new Array (); के लिए (var i = 0; मैं <num; i ++) {x.push (i + 1); } वापसी x; } // इस फ़ंक्शन का उपयोग तब करें जब संख्या गतिशील रूप से बदल जाती है
मानवेंद्र

1
@ sh0ber। जब मुझे संख्या ड्रॉपडाउन में चयनित मूल्य के आधार पर सूची आइटम बदलने की आवश्यकता होती है। मैंने पहले आपके फ़ंक्शन की कोशिश की, जब यह काम नहीं कर रहा है, तो मैंने इसे अपडेट करने के लिए इसे ऊपर से बदल दिया। सूची आइटम की जब ड्रॉपडाउन में अलग संख्या का चयन किया जाता है। क्या आप अपने फ़ंक्शन का उपयोग करके मेरे परिदृश्य की जांच कर सकते हैं।
मानवेंद्र

135

तुम यह केर सकते हो:

<div ng-repeat="i in [1, 2, 3, 4]">
  ...
</div>

1
Chrome v। 39.0.2171.95 (64-बिट), FF v। 33.1.1 और Safari v। 8.0.2
Neara

यह पूरी तरह से काम करता है यदि आप इसे एक पगमेंट कंट्रोल में उपयोग कर रहे हैं, जहां आपको सभी की आवश्यकता है <li> <a href = "javascript:;" एनजी-क्लिक = "सिलेक्टपेज ($ इंडेक्स)"> {{i}} </a> </ li>
रिक

@AdityaMP, जावास्क्रिप्ट में पर्वतमाला के लिए इसका उपयोग stackoverflow.com/a/31989462/3160597
azerafati

1
डायनामिक-लेंथ एरे के लिए एरे कंस्ट्रक्टर को कॉल करने पर विचार करें, जैसा कि इस उत्तर में बताया गया है ।
maxathousand

क्या होगा अगर मुझे 120 बार दोहराना है। क्या मुझे [1,2,3 ... 120] के साथ जाना चाहिए?
मुनकादेलर तुमनबेयार

94

यहाँ एक उदाहरण है कि आप यह कैसे कर सकते हैं। ध्यान दें कि मैं एनजी-रिपीट डॉक्स में एक टिप्पणी से प्रेरित था: http://jsfiddle.net/digitalzebra/wnWY6/

एनजी-रिपीट निर्देश पर ध्यान दें:

<div ng-app>
    <div ng-controller="TestCtrl">
        <div ng-repeat="a in range(5) track by $index">{{$index + 1}}</div>
    </div>
</div>

यहाँ नियंत्रक है:

function TestCtrl($scope) {
    $scope.range = function(n) {
        return new Array(n);
    };
};

8
आप _.rangeसरणी बनाने के लिए अंडरस्कोर या लॉश से भी उपयोग कर सकते हैं : $ गुंजाइश। व्यवस्था = _.range (0, n);
दोपहर

83

मैं इस बारे में सोच jsFiddle इस से धागा हो सकता है आप के लिए क्या देख रहे हैं।

<div ng-app ng-controller="Main">
   <div ng-repeat="item in items | limitTo:2">
       {{item.name}}
   </div>
</div>

3
Google थ्रेड लिंक पर आगे पढ़ें और यह बताता है कि आप 'स्लाइस' का उपयोग कैसे कर सकते हैं। उदाहरण के लिए समूह 1: items.slice (0,3), group2: items.slice (3,6), आदि
trevorc

7
इस उत्तर के परिणामस्वरूप आपके नियंत्रकों में सबसे न्यूनतम पदचिह्न होंगे और मेरा मानना ​​है कि पसंदीदा कोणीय दृष्टिकोण भी है। IMO स्वीकृत उत्तर को इसके साथ प्रतिस्थापित किया जाना चाहिए।
मैट जेन्सेन

1
यह स्वीकृत उत्तर होना चाहिए (मेरी राय में) - सबसे सुरुचिपूर्ण, सबसे गैर-पसंद।
कोड़ी

11
@ कोडी दुर्भाग्य से, नहीं, यह सवाल का जवाब नहीं देता है। ओपी "हमेशा एक सरणी पर पुनरावृति करने के बजाय" और " $scope.number5 के बराबर मान" बताता है । आशय आइटम गणना को परिभाषित करने के लिए एक पूर्णांक चर का उपयोग करना था, इसे हार्डकोड नहीं करना और पूर्वनिर्धारित सरणी का उपयोग नहीं करना।
दान

5
@ कोडी @ sh0ber को आप अपने दायरे में सीमित कर सकते हैं ( $scope.limit = 2) और इसका उपयोग करें जैसे ...|limitTo:limit- अपडेटेड
फ़िडेल

58

एक सरल दृष्टिकोण होगा (5 बार के उदाहरण के लिए):

<div ng-repeat="x in [].constructor(5) track by $index">
       ...
</div>

5
प्रतिभाशाली। नया सरणी वापस करने के लिए नियंत्रक में पठनीय, छोटा और कोई मूर्खतापूर्ण कार्य नहीं है।
maxathousand

2
मैं इस तरह से प्यार करता हूँ।
रब्बी शुकी गुर

अपवित्र, यह तब संभव नहीं था जब प्रश्न पहले पूछा गया था (कोणीय 1.2)। मैंने इसे शामिल करने के लिए स्वीकृत उत्तर को संशोधित किया। अच्छी नौकरी!
दान

1
मेरी इच्छा है कि मुझे समझ में आया कि यह वाक्य रचना क्यों काम करती है लेकिन Array(5)(या वास्तव [...Array(5).keys()]में एक सरणी प्राप्त करने के लिए [0,1,2,3,4])
डायलन निकोल्सन

50

मैं उसी मुद्दे में भाग गया। मैं इस धागे के पार आया था, लेकिन वे अपने यहाँ के तरीकों को पसंद नहीं करते थे। मेरा समाधान अंडरस्कोर का उपयोग कर रहा था। जेएस, जिसे हमने पहले ही स्थापित किया था। यह इस तरह सरल है:

<ul>
    <li ng-repeat="n in _.range(1,6)"><span>{{n}}</span></li>
</ul>

यह वही करेगा जो आप देख रहे हैं।


27
यह अच्छा है, लेकिन ध्यान दें कि डिफ़ॉल्ट रूप से अंडरस्कोर स्कोप में नहीं है - आप ऐसा कुछ किए बिना अपने HTML दृश्य में इसका उपयोग नहीं कर पाएंगे $scope._ = _
jedd.ahyoung 19

6
यदि आप लॉश या अंडरस्कोर का उपयोग कर रहे हैं, तो आपको इसे लगाना चाहिए $rootScopeताकि इसका उपयोग हर जगह किया जा सके। इसे अपने app.runफंक्शन में रखें app.config: app.run(function ($rootScope) { $rootScope._ = _; });
जेरेमी मोरित्ज़

यह मेरे लिए एक सही जवाब था। यह सरल और बहुत सीधा है। चूँकि मैं एक चर का उपयोग करके दोहरा रहा था, जिसमें मुझे एनजी-रिपीट = "n in _.range (1, count + 1) करना था। समाधान के लिए धन्यवाद।
Darryl

मैंने यह कोशिश की और _ $ rootScope में _ दिखाता है, एनजी-रिपीट कुछ भी रेंडर नहीं करता है।
पॉल

49

मैं अपने html को बहुत कम रखना चाहता था, इसलिए एक छोटा फिल्टर परिभाषित किया जो कि सरणी बनाता है [0,1,2, ...] जैसा कि दूसरों ने किया है:

angular.module('awesomeApp')
  .filter('range', function(){
    return function(n) {
      var res = [];
      for (var i = 0; i < n; i++) {
        res.push(i);
      }
      return res;
    };
  });

उसके बाद, इस तरह से उपयोग करना संभव है:

<ul>
  <li ng-repeat="i in 5 | range">
    {{i+1}} <!-- the array will range from 0 to 4 -->
  </li>
</ul>

34

यह वास्तव में पूरी तरह से है, लेकिन यह एक पूर्णांक या चर के लिए नियंत्रक के बिना काम करता है:

पूर्णांक:

<span ng-repeat="_ in ((_ = []) && (_.length=33) && _) track by $index">{{$index}}</span>

चर:

<span ng-repeat="_ in ((_ = []) && (_.length=myVar) && _) track by $index">{{$index}}</span>

सबसे अच्छा हैक कभी! धन्यवाद
Jannis

2
_ in (_ = []).length = 33; _ track by $indexथोड़ा छोटा
फैब्रिकियो

16

इसे करने के कई तरीके हैं। मैं वास्तव में अपने नियंत्रक में तर्क रखने से परेशान था इसलिए मैंने एक तत्व को बार-बार दोहराने की समस्या को हल करने के लिए एक सरल निर्देश बनाया।

स्थापना:

निर्देश का उपयोग करके स्थापित किया जा सकता है bower install angular-repeat-n

उदाहरण:

<span ng-repeat-n="4">{{$index}}</span

पैदा करता है: 1234

यह एक कार्यक्षेत्र चर का उपयोग करके भी काम करता है:

<span ng-repeat-n="repeatNum"></span>

स्रोत:

Github


1
यह कुछ ऐसा है जिसे उन्हें आधिकारिक कोणीय निर्देशों में शामिल करने पर विचार करना चाहिए
हर्षाक्स्वाद

13

यह स्वीकृत उत्तर पर केवल एक मामूली बदलाव है, लेकिन आपको वास्तव में एक नया फ़ंक्शन बनाने की आवश्यकता नहीं है। केवल 'एरे' को दायरे में आयात करने के लिए:

<div ng-app="myapp">
    <div ng-controller="ctrlParent">
        <ul>
            <li ng-repeat="i in counter(5) track by $index">
              <span>{{$index+1}}</span></li>
        </ul>
    </div>
</div>
var app = angular.module('myapp',[]);
app.controller('ctrlParent',function($scope){
    $scope.myNumber = 5;
    $scope.counter = Array;
});

एक लाइव उदाहरण के लिए इस फिडेल को देखें ।


4
तिथि तक (2016) और बहुत क्लीनर!
जूलियन मैलेज

9

सबसे आसान उत्तर: कोड की 2 लाइनें

JS (आपके AngularJS कंट्रोलर में)

$scope.range = new Array(MAX_REPEATS); // set MAX_REPEATS to the most repetitions you will ever need in a single ng-repeat that makes use of this strategy

एचटीएमएल

<div ng-repeat="i in range.slice(0,repeatCount) track by $index"></div>

... repeatCountइस स्थान में दिखाई देने वाली पुनरावृत्ति की संख्या कहां है।


1
मेरा मानना ​​है कि यह आपको HTML में रिपीट की संख्या को बदलने की अनुमति नहीं देता है यदि इसे नियंत्रक में बदल दिया जाता है, जब तक कि आप इसे किसी फ़ंक्शन में नहीं लपेटते हैं जैसे कि अन्य उत्तरों ने किया है।
trysis

@trysis: मुझे यकीन नहीं है कि अगर मैं आपके मुद्दे को समझता हूं, लेकिन आपको repeatCountHTML में एक वास्तविक संख्या के साथ प्रतिस्थापित करना चाहिए , और जब तक यह संख्या कम-से-या-बराबर-होती है MAX_REPEATS, यह आपको संख्या निर्धारित करने देगा HTML में दोहराता है।
JellicleCat

1
मेरी राय में, यह ngRepeatनिर्देशन को सीमित करने का सबसे सुरुचिपूर्ण तरीका है । का उपयोग करना Array.prototype.sliceऔर मुहावरेदार जेएस को हमेशा अंडरस्कोर।ज (जैसे ब्राउज़र संगतता) के रूप में एक पुस्तकालय में चुना जाना चाहिए ।
पैट मिगलियाकियो

एक बुरा समाधान नहीं, +1, लेकिन मुझे लगता है कि यह उत्तर आसान है, और नियंत्रक को अव्यवस्थित करने से बचता है।
maxathousand

8

कोणीय एक बहुत ही मीठा फंक्शन देता है जिसे स्लाइस कहा जाता है .. इसके इस्तेमाल से आप वो हासिल कर सकते हैं जिसकी आपको तलाश है। उदा। एनजी-रिपीट = "एब्स इन एब्सलिस (स्टार्टइंडेक्स, एंडइंडेक्स)"

यह डेमो: http://jsfiddle.net/sahilosheal/LurcV/39/ आपकी मदद करेगा और आपको बताएगा कि इस "जीवन को आसान बनाने" फ़ंक्शन का उपयोग कैसे करें। :)

एचटीएमएल:

<div class="div" ng-app >
    <div ng-controller="Main">
        <h2>sliced list(conditional NG-repeat)</h2>
        <ul ng-controller="ctrlParent">
            <li ng-repeat="ab in abc.slice(2,5)"><span>{{$index+1}} :: {{ab.name}} </span></li>
        </ul>
        <h2>unsliced list( no conditional NG-repeat)</h2>
         <ul ng-controller="ctrlParent">
            <li ng-repeat="ab in abc"><span>{{$index+1}} :: {{ab.name}} </span></li>
        </ul>

    </div>

सीएसएस:

ul
{
list-style: none;
}
.div{
    padding:25px;
}
li{
    background:#d4d4d4;
    color:#052349;
}

एनजी-जे एस:

 function ctrlParent ($scope) {
    $scope.abc = [
     { "name": "What we do", url: "/Home/AboutUs" },
     { "name": "Photo Gallery", url: "/home/gallery" },
     { "name": "What we work", url: "/Home/AboutUs" },
     { "name": "Photo play", url: "/home/gallery" },
     { "name": "Where", url: "/Home/AboutUs" },
     { "name": "playground", url: "/home/gallery" },
     { "name": "What we score", url: "/Home/AboutUs" },
     { "name": "awesome", url: "/home/gallery" },
     { "name": "oscar", url: "/Home/AboutUs" },
     { "name": "american hustle", url: "/home/gallery" }
    ];
}
function Main($scope){
    $scope.items = [{sort: 1, name: 'First'}, 
                    {sort: 2, name: 'Second'}, 
                    {sort: 3, name: 'Third'}, 
                    {sort: 4, name:'Last'}];
    }

6

कोणीय 1.2.x के लिए एक जवाब है

मूल रूप से यह समान है, के मामूली संशोधन के साथ ng-repeat

<li ng-repeat="i in getNumber(myNumber) track by $index">

यहाँ फिडेल है: http://jsfiddle.net/cHQLH/153/

ऐसा इसलिए है क्योंकि कोणीय 1.2 निर्देश में डुप्लिकेट मानों की अनुमति नहीं देता है। इसका मतलब है कि यदि आप निम्नलिखित करने की कोशिश कर रहे हैं, तो आपको एक त्रुटि मिलेगी।

<li ng-repeat="x in [1,1,1]"></li>

6

आप ng-ifनिर्देश का उपयोग कर सकते हैंng-repeat

इसलिए, यदि संख्या को बार-बार तत्व की आवश्यकता होती है, तो संख्या:

<li ng-repeat="item in list" ng-if="$index < num">

1
आप में से जो साफ मार्कअप पसंद करते हैं उनके लिए ... ng-repeatइस तरह से उपयोग करते हुए ध्यान रखें कि यह अभी भी टैग ( <!-- ngIf: $index < num -->आदि) पर टिप्पणी करता है । liDOM को रेंडर करने के लिए बस कोई एलिमेंट नहीं होगा । परिणाम फलक पर एक "दृश्य स्रोत" की जाँच करें कि मेरा क्या मतलब है।

3

आप इस उदाहरण का उपयोग कर सकते हैं।

अंदर नियंत्रक:

$scope.data = {
    'myVal': 33,
    'maxVal': 55,
    'indexCount': function(count) {
        var cnt = 10;
        if (typeof count === 'number') {
            cnt = count;
        }
        return new Array(cnt);
    }
};

HTML कोड पक्ष में चयनित तत्व के लिए उदाहरण:

<select ng-model="data.myVal" value="{{ data.myVal }}">
    <option ng-repeat="i in data.indexCount(data.maxVal) track by $index" value="{{ $index + 1 }}">{{ $index + 1 }}</option>
</select>

3

CoffeeScript का उपयोग करने वाले उपयोगकर्ताओं के लिए, आप श्रेणी समझ का उपयोग कर सकते हैं:

आदेश

link: (scope, element, attrs) ->
  scope.range = [1..+attrs.range]

या नियंत्रक

$scope.range = [1..+$someVariable]
$scope.range = [1..5] # Or just an integer

खाका

<div ng-repeat="i in range">[ the rest of your code ]</div>

3

इवान के पहले उत्तर पर थोड़ा विस्तार करते हुए, आप एक स्ट्रिंग को स्टेटमेंट के बिना ट्रैक के संग्रह के रूप में उपयोग कर सकते हैं, जब तक कि पात्र अद्वितीय हैं, इसलिए यदि उपयोग-मामला 10 नंबर से कम है जैसा कि सवाल है तो मैं बस करूँगा :

<ul>
   <li ng-repeat="n in '12345'"><span>{{n}}</span></li>
</ul>

जो थोड़ा सांवला है, यकीन है, लेकिन देखने में काफी सरल है और विशेष रूप से भ्रमित नहीं है।


2

सबसे पहले, LoDash का उपयोग करके एक कोणीय फ़िल्टर बनाएं:

angular.module('myApp').filter('times', function(){
   return function(value){
      return _.times(value || 0);
   }
});

LoDash बार फ़ंक्शन अशक्त, अपरिभाषित, 0, संख्या और संख्याओं के स्ट्रिंग प्रतिनिधित्व को संभालने में सक्षम है।

फिर, इसे इस रूप में अपने HTML में उपयोग करें:

<span ng-repeat="i in 5 | times">
 <!--DO STUFF-->
</span>

या

<span ng-repeat="i in myVar | times">
 <!--DO STUFF-->
</span>

1

मुझे इसके लिए और अधिक गतिशील समाधान की आवश्यकता थी - जहां मैं दोहराव बढ़ा सकता हूं।

एचटीएमएल

<div ng-repeat="n in newUserCount">
<input type="text" value="" name="newuser{{n}}"/>
</div>

डुप्लीकेट कंट्रोल

<span class="helper" ng-click="duplicateUser()">
Create another user with the same permissions
</span>

जे एस

 $scope.newUserCount = Array('1');
var primaryValue = 1;
$scope.duplicateUser = function()
{
    primaryValue++;
    $scope.newUserCount.push(primaryValue)
}

1

कोणीय एक संग्रह को संशोधित करने के लिए फिल्टर प्रदान करता है। इस मामले में संग्रह शून्य होगा, अर्थात् [], और फ़िल्टर भी तर्क लेता है, निम्नानुसार है:

<div id="demo">
    <ul>
        <li ng-repeat="not in []|fixedNumber:number track by $index">{{$index}}</li>
    </ul>
</div>

जे एस:

module.filter('fixedNumber', function() {
    return function(emptyarray, number) {
        return Array(number);
    }
});

module.controller('myCtrl', ['$scope', function($scope) {
    $scope.number = 5;
}]);

यह विधि ऊपर प्रस्तावित लोगों के समान है और जरूरी नहीं कि यह बेहतर हो, लेकिन AngularJS में फिल्टर की शक्ति को दर्शाता है।


1

यदि n बहुत अधिक नहीं है, तो n वर्णों की एक स्ट्रिंग के साथ विभाजन ('') का उपयोग करने के लिए एक और विकल्प हो सकता है:

<div ng-controller="MainCtrl">
<div ng-repeat="a in 'abcdefgh'.split('')">{{$index}}</div>
</div>

मेरा मानना ​​है कि विभाजन यहाँ अनावश्यक है। एक स्ट्रिंग पहले से ही वर्णों की एक सरणी है।
omikes

1

मैंने उसी समस्या का सामना किया और यही वह है जो मैं बाहर आया था:

(function () {
  angular
    .module('app')
    .directive('repeatTimes', repeatTimes);

  function repeatTimes ($window, $compile) {
    return { link: link };

    function link (scope, element, attrs) {
      var times    = scope.$eval(attrs.repeatTimes),
          template = element.clone().removeAttr('repeat-times');

      $window._(times).times(function (i) {
        var _scope = angular.extend(scope.$new(), { '$index': i });
        var html = $compile(template.clone())(_scope);

        html.insertBefore(element);
      });

      element.remove();
    }
  }
})();

... और HTML:

<div repeat-times="4">{{ $index }}</div>

LIVE EXAMPLE

मैंने अंडरस्कोर के timesफंक्शन का उपयोग किया क्योंकि हम पहले से ही प्रोजेक्ट पर इसका उपयोग कर रहे थे, लेकिन आप इसे आसानी से देशी कोड से बदल सकते हैं।


0

मैं एक पुन: प्रयोज्य निर्देश बना रहा हूं जहां अधिकतम संख्या दूसरे एनजी-रिपीट से आएगी। तो, यह सबसे अच्छा मतदान जवाब पर एक संपादन है।

कंट्रोलर पर कोड को केवल इस में बदलें -

$scope.getNumber = function(num) {
    var temp = [];
    for(var j = 0; j < num; j++){
        temp.push(j)
    }
    return temp; 
}

यह पुनरावृत्तियों की निर्दिष्ट संख्या के साथ एक नया सरणी लौटाएगा


0

एक स्ट्रिंग पर पुनरावृति के बाद से यह प्रत्येक वर्ण के लिए एक आइटम प्रस्तुत करेगा:

<li ng-repeat = "k in 'aaaa' track by $index">
   {{$index}} //THIS DOESN'T ANSWER OP'S QUESTION. Read below.
</li>

हम देशी फिल्टर का उपयोग करके इस बदसूरत लेकिन नो-कोड वर्कअराउंड का उपयोग कर सकते हैं number|n decimal places

 <li ng-repeat="k in (0|number:mynumber -2 ) track by $index">
    {{$index}}
 </li>

इस तरह हमारे पास mynumberबिना अतिरिक्त कोड वाले तत्व होंगे । कहते हैं '0.000'
हम mynumber - 2क्षतिपूर्ति करने के लिए उपयोग करते हैं। 0.
यह 3 से कम संख्या के लिए काम नहीं करेगा, लेकिन कुछ मामलों में उपयोगी हो सकता है।


क्या आपने उपयोग किया track by $index?
इवान फेरर विला

यह यहूदी बस्ती है। यदि आप प्रत्येक यात्रा के लिए एक चार के लिए मजबूर होने जा रहे हैं, तो आप कर सकते हैंng-repeat="i in [1,2,3,4]"
Roi

बेशक, लेकिन ओपी चाहता है कि पुनरावृति एक चर के आधार पर n बार हो$scope.number
इवान फेरर विला

'आका' के बजाय 'एबीसी' क्यों नहीं और फिर ट्रैक को स्क्रैप करें?
omikes

aaaaमेरी व्याख्या करने के लिए एक उदाहरण था-बहुत ही सुरुचिपूर्ण-वर्कअराउंड नहीं। हार्डकोडेड hard आआआ ’या c एबसीडी’ का उपयोग करने से आपको एक निश्चित लंबाई सूची मिल जाती है, लेकिन mynumber-2दशमलव को 0 में जोड़कर , आपको mynumberचार्ट के साथ एक you स्ट्रिंग ’मिलता है । कहते हैं mynumber=5, आप प्राप्त करते हैं '0.000', तो हम $ 1 का उपयोग करते हुए पुनरावृति करते हैं
इवान फेरर विला

0
$scope.number = 5;

<div ng-repeat="n in [] | range:$scope.number">
      <span>{{$index}}</span>
</div>

-1

सरल तरीका:

    public defaultCompetences: Array<number> = [1, 2, 3];

घटक / नियंत्रक में और फिर:

    <div ng-repeat="i in $ctrl.defaultCompetences track by $index">

यह कोड मेरे टाइपस्क्रिप्ट प्रोजेक्ट से है, लेकिन इसे शुद्ध जावास्क्रिप्ट में फिर से व्यवस्थित किया जा सकता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.