2013-02-18 3 views

risposta

18

Se si desidera utilizzare le funzioni di undersore nel modello si dovrà esporre su un campo di applicazione. Se si desidera avere a disposizione in tutti i modelli un modo di farlo sarebbe:

var app = angular.module('angularjs-starter', []); 

app.run(function($rootScope){ 
    $rootScope._ = _; 
}); 

allora si potrebbe utilizzare in un modello come hai provato:

<div ng-repeat="item in _.range(20)">{{item}}</div> 

Qui è un lavoro Plunk: http://plnkr.co/edit/1Va4EikvRyFiQvhb2HYV?p=preview

Mentre le opere di cui sopra non dovrebbe essere usato. Il modello dovrebbe essere inizializzato in un controller. In caso contrario, AngularJS eseguirà _range su ciascun ciclo digest per generare un nuovo array.

+4

Come accennato da Pawel, questa soluzione è a disagio. il problema con questa soluzione è che ng-repeat non sarà in grado di ottimizzare affatto. Ogni volta che controlli angolari "_.range (20)" restituirà un nuovo array - e quindi ng-repeat, dato che ha un nuovo oggetto array, creerà venti ** nuovi ** elementi ogni volta. Se ng-repeat trova invece la stessa matrice, potrebbe salvare gli elementi. Dovresti fare ciò che ha detto Pawel e fare '$ scope.range20 = _.range20' o qualcosa - e rigenerarlo solo quando hai bisogno di un nuovo intervallo. –