2013-02-18 3 views

Antwort

18

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.

+4

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. –

Verwandte Themen