2013-02-18 9 views

Odpowiedz

18

Jeśli chcesz korzystać z funkcji undersore w szablonie trzeba będzie wystawiać go na zakres. Jeśli chcesz mieć ona dostępna we wszystkich szablonach jednym ze sposobów byłoby to:

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

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

Następnie można używać go w szablonie jako próbowałem:

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

Oto robocza plunk: http://plnkr.co/edit/1Va4EikvRyFiQvhb2HYV?p=preview

Chociaż powyższe prace nie powinny być używane. Model powinien zostać zainicjowany w kontrolerze. W przeciwnym razie AngularJS wykona _range w każdym cyklu $ digest, aby wygenerować nową tablicę.

+4

Jak wspomniał Paweł, to rozwiązanie jest niespokojne. Problem z tym rozwiązaniem polega na tym, że ng-repeat nie będzie w stanie zoptymalizować w ogóle. Za każdym razem, gdy kątowe zabrudzenia-sprawdza "_.range (20)", otrzyma nową tablicę z powrotem - a następnie ng-repeat, ponieważ ma nowy obiekt tablicy, za każdym razem tworzy dwadzieścia ** nowych ** elementów. Jeśli ng-repeat znajdzie taką samą tablicę, może zapisać elementy. Powinieneś zrobić to, co powiedział Paweł i wykonać '$ scope.range20 = _.range20' lub coś takiego - i odnawiać go tylko wtedy, gdy potrzebujesz nowego zakresu. –