9
如果我只需要20次迭代,我該如何重複我的塊? 它不是工作:包括在頁面下劃線_.range()不適用於AngularJS ng-repeat
如果我只需要20次迭代,我該如何重複我的塊? 它不是工作:包括在頁面下劃線_.range()不適用於AngularJS ng-repeat
<div ng-repeat="item in _.range(20)"></div>
UnderscoreJS如果你想使用undersore的功能,在你的模板,你將不得不將其暴露在一個範圍之內。如果你想擁有它的所有模板提供這樣做的一個辦法是:
var app = angular.module('angularjs-starter', []);
app.run(function($rootScope){
$rootScope._ = _;
});
然後,你可以在模板中使用它,你已經試過:
<div ng-repeat="item in _.range(20)">{{item}}</div>
這裏是一個工作plunk:http://plnkr.co/edit/1Va4EikvRyFiQvhb2HYV?p=preview
雖然上面的作品不應該使用。模型應該在控制器中初始化。否則AngularJS將在每個$ digest循環中執行_range
以生成一個新數組。
正如帕維爾提到的,這種解決方案令人不安。這個解決方案的問題是ng-repeat根本無法進行優化。每次角度髒檢查'_.range(20)'它會得到一個新的數組 - 然後ng-repeat,因爲它有一個新的數組對象,每次都會創建二十個**新的**元素。如果ng-repeat找到相同的數組,它可以保存這些元素。你應該做Pawel所說的並且做'$ scope.range20 = _.range20'或者什麼 - 並且只有當你需要一個新的範圍時才能重新生成它。 – 2013-02-18 17:43:47