如何使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>