Jeśli chcę tylko 20 iteracji, jak mogę powtórzyć mój blok? isnt pracy:podkreślenie _.range() nie działa w AngularJS ng-repeat
<div ng-repeat="item in _.range(20)"></div>
underscore.js zawarte na stronie
Jeśli chcę tylko 20 iteracji, jak mogę powtórzyć mój blok? isnt pracy:podkreślenie _.range() nie działa w AngularJS ng-repeat
<div ng-repeat="item in _.range(20)"></div>
underscore.js zawarte na stronie
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ę.
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. –