我尝试使用lodash在ng-repeat
指令处使用它,这样:
<div ng-controller="GridController" ng-repeat="n in _.range(5)">
<div>Hello {{n}}</div>
</div>
成为GridController
:
IndexModule.controller('GridController', function () {
this._ = _
})
但是没有工作,所以没有任何重复。如果我将指令更改为ng-repeat="i in [1,2,3,4,5]"
,它将会正常工作。
lodash
已经通过<script>
在<header>
angular
之前加入了{strong> {{1}} 。我怎样才能使它发挥作用?
答案 0 :(得分:109)
我更喜欢在全球范围内引入'_'并注入测试,请参阅我对这个问题的回答 Use underscore inside controllers
var myapp = angular.module('myApp', [])
// allow DI for use in controllers, unit tests
.constant('_', window._)
// use in views, ng-repeat="x in _.range(3)"
.run(function ($rootScope) {
$rootScope._ = window._;
});
答案 1 :(得分:56)
我只是想对@beret和@ wire的回答添加一些说明。他们肯定帮助并得到了它的主旨,但整个过程的顺序可能适合某人。这就是我用lodash建立我的角度环境的方法,并让它与yeoman gulp-angular合作以正常使用
bower install lodash --save
(这增加了凉亭和保存给凉亭json)
修改bower json以在角度之前加载lodash。 (这有助于你使用gulp注入并且不想手动将其放入index.html。否则在角度链接之前将其放入index.html)
按@ wire的方向创建一个新常量。
'use strict'; angular.module('stackSample') // lodash support .constant('_', window._);
.filter('coffeeFilter', ['_', function(_) {...}]);
.controller('SnesController', function ($scope, _) { $scope._ = _; })
希望这有助于某人建立自己的网站。 :)
答案 2 :(得分:29)
ng-repeat
需要一个Angular表达式,它可以访问Angular范围变量。因此,将_
分配给this
,将其分配给注入控制器的$scope
对象:
IndexModule.controller('GridController', function ($scope) {
$scope._ = _;
})
答案 3 :(得分:2)
我不确定您使用的是什么版本的Angular。看起来你应该刚刚使用&#39;控制器作为&#39;使用&#39;这个&#39;访问dom中的变量。
这是解决方案,而不是使用范围。 http://plnkr.co/edit/9IybWRrBhlgQAOdAc6fs?p=info
<body ng-app="myApp" ng-controller="GridController as grid">
<div ng-repeat="n in grid._.range(5)">
<div>Hello {{n}}</div>
</div>
</body>