如何使Lodash与Angular JS一起工作?

我试图使用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>之前。 我怎样才能使它工作?

我更喜欢在全局中引入'_'并且注入testing,请参阅我对这个问题的回答在控制器中使用下划线

 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._; }); 

我只是想在@ beret和@wire的回答中加一些说明。 他们肯定帮了忙,弄到了这个问题,但是整个过程可能适合某人。 这就是我如何使用lodash设置我的angular度环境,并使它与yeoman吞咽angular度一起正常工作

  • bower install lodash --save保存(这增加了凉亭,并保存凉亭json)

  • 在angular度修改之前修改凉亭json有lodash加载。 (这有助于如果你使用gulp注入,不想手动把它放到index.html,否则把它放到index.html之前的angular链接)

  • 在@wire的方向上创造一个新的常量。

 'use strict'; angular.module('stackSample') // lodash support .constant('_', window._); 
  • 注入任何angular度的服务,filter或控制器,就像你所做的任何事情一样:
 .filter('coffeeFilter', ['_', function(_) {...}]); 
  • 把它放到一个有angular度的html视图中,只要将它注入到控制器中,并为其指定一个范围variables:
 .controller('SnesController', function ($scope, _) { $scope._ = _; }) 

希望这可以帮助有人build立他们的网站。 🙂

ng-repeat需要一个Angularexpression式,它可以访问Angular scopevariables。 所以,而不是分配_ this ,将其分配给您注入控制器的$scope对象:

 IndexModule.controller('GridController', function ($scope) { $scope._ = _; }) 

演示

我不确定你正在使用什么版本的Angular。 看起来你应该在使用'this'访问dom中的variables时使用'Controller as'语法。

这是解决方法,而不是使用范围。 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>