2013-02-18 23 views

回答

18

<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以生成一個新數組。

+4

正如帕維爾提到的,這種解決方案令人不安。這個解決方案的問題是ng-repeat根本無法進行優化。每次角度髒檢查'_.range(20)'它會得到一個新的數組 - 然後ng-repeat,因爲它有一個新的數組對象,每次都會創建二十個**新的**元素。如果ng-repeat找到相同的數組,它可以保存這些元素。你應該做Pawel所說的並且做'$ scope.range20 = _.range20'或者什麼 - 並且只有當你需要一個新的範圍時才能重新生成它。 – 2013-02-18 17:43:47