Wenn ich nur 20 Iteration möchte, wie kann ich meinen Block wiederholen? Es ist nicht Arbeit:Unterstrich _.range() funktioniert nicht bei AngularJS ng-repeat
<div ng-repeat="item in _.range(20)"></div>
Underscore.js in der Seite enthalten
Wenn ich nur 20 Iteration möchte, wie kann ich meinen Block wiederholen? Es ist nicht Arbeit:Unterstrich _.range() funktioniert nicht bei AngularJS ng-repeat
<div ng-repeat="item in _.range(20)"></div>
Underscore.js in der Seite enthalten
Wenn Sie undersore Funktionen in Ihrer Vorlage verwenden möchten, werden Sie es auf einem Umfang auszusetzen haben. Wenn Sie in allen Vorlagen eine Möglichkeit, es zur Verfügung haben wollen, dies zu tun wäre:
var app = angular.module('angularjs-starter', []);
app.run(function($rootScope){
$rootScope._ = _;
});
Dann könnten Sie es in einer Vorlage verwenden, wie Sie versucht haben:
<div ng-repeat="item in _.range(20)">{{item}}</div>
Hier ist eine Arbeits plunk: http://plnkr.co/edit/1Va4EikvRyFiQvhb2HYV?p=preview
Während das oben genannte funktioniert, sollte es nicht verwendet werden. Das Modell sollte in einer Steuerung initialisiert werden. Andernfalls führt AngularJS bei jedem $ Digest-Zyklus _range
aus, um ein neues Array zu generieren.
Wie Pawel erwähnt, ist diese Lösung unruhig. Das Problem mit dieser Lösung ist, dass ng-repeat überhaupt nicht in der Lage ist, zu optimieren. Jedes Mal, wenn angular dirty-checks '_.range (20)' wird, wird ein neues Array zurückkommen - und dann wird ng-repeat, da es ein neues Array-Objekt hat, jedes Mal zwanzig ** neue ** Elemente erzeugen. Wenn ng-repeat stattdessen das gleiche Array findet, könnten die Elemente gespeichert werden. Sie sollten tun, was Pawel gesagt hat und '$ scope.range20 = _.range20' oder so etwas tun - und nur neu generieren, wenn Sie einen neuen Bereich benötigen. –