如何让lodash与Angular JS一起使用?

die*_*lar 65 javascript angularjs lodash

我正在尝试使用lodash在ng-repeat指令中使用它,这样:

<div ng-controller="GridController" ng-repeat="n in _.range(5)">
    <div>Hello {{n}}</div>
</div>
Run Code Online (Sandbox Code Playgroud)

存在GridController:

IndexModule.controller('GridController', function () {

this._ = _

})
Run Code Online (Sandbox Code Playgroud)

但是没有工作,所以没有重复.如果我改变指令ng-repeat="i in [1,2,3,4,5]"它将工作.

lodash已经包含<script><header>之前angular.我怎样才能使它工作?

wir*_*res 109

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

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._;
  });
Run Code Online (Sandbox Code Playgroud)

  • "_"也可用于隔离范围吗? (4认同)
  • 是的,这就是我使用的,我创建了一个名为'_'的服务,并将其注入我需要它的每个控制器中:```.`('_',function($ window){return $ window._;//假设下划线已经加载到页面上})``` (4认同)
  • 使用$ window而不是窗口不是更好吗? (2认同)

Thi*_*obo 58

我只是想对@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._);
Run Code Online (Sandbox Code Playgroud)
  • 像往常一样注入任何角度服务,过滤器或控制器:
.filter('coffeeFilter', ['_', function(_) {...}]);
Run Code Online (Sandbox Code Playgroud)
  • 要将它放入一些有角度的html视图中,只需将其注入控制器并为其分配范围变量:
.controller('SnesController', function ($scope, _) {
  $scope._ = _;
})
Run Code Online (Sandbox Code Playgroud)

希望这有助于某人建立自己的网站.:)


Mar*_*ine 29

ng-repeat需要一个Angular表达式,它可以访问Angular范围变量.因此,分配给它,将其分配_给您注入控制器this$scope对象:

IndexModule.controller('GridController', function ($scope) {
  $scope._ = _;
})
Run Code Online (Sandbox Code Playgroud)

演示

  • 总是使用`controler as`语法 (7认同)
  • 差不多,是的,除非你打算使用[`controller as`](http://stackoverflow.com/questions/21287794/angularjs-controller-as-syntax-clarification)语法. (4认同)