AngularJs:在视图模板中使用Underscore/Lodash/_

6
我正在尝试在AngularJS视图模板中使用Underscore/Lodash/_。这样,我就可以像下面展示的那样使用_:
<li ng-repeat="number in _.range(100, 125)"><!-- Some logic here --></li>

而且,我们可以使用Lodash的任何有用函数。

我们只需将下划线添加到控制器和指令的$scope中,就可以实现这一点,如下所示:

$scope._ = _;

但我希望能够进行一次性的配置/更改,将下划线添加到每个视图模板的作用域中。一个我发现有用的方法是:
$rootScope._ = _; //Have this line in .run() method.

这对于所有控制器和指令视图都可以正常工作。但是对于隔离作用域指令的视图则无法正常工作。我需要在指令定义中再次添加($scope._ = _;)。
是否有一次/单个位置的更改/配置/代码可以实现此功能?
注:其他问题如何在Angular JS中使用lodash?具体讨论了在ng-repeat中使用lodash的问题。但我的问题是关于在每个视图模板(包括指令视图模板)中使用lodash。这就是我发现隔离作用域指令存在限制的地方。

2
创建一个常量并在需要的地方注入?但是我觉得在标记中放置库函数没有太多意义。 - charlietfl
可能是重复的问题:如何让lodash与Angular JS一起工作? - victorkt
4
我强烈建议使用过滤器而不是将其传递给您的视图。详情请参见:http://toddmotto.com/everything-about-custom-filters-in-angular-js/。 - JMP
1个回答

0
这是我完成此操作的方法:
步骤1:在您的index.html中包含underscore-min.js:
<!-- underscore to be included with angular js -->
<script src="lib/underscore/underscore-min.js"></script>

第二步:创建一个“_”服务,您可以将其注入到所有需要的控制器中:
'use strict';

angular.module('myApp')
.factory('_', function($window) {
    return $window._; // assumes underscore is loaded on the page
});

步骤3:通过注入 '_' 在任何地方使用它:

'use strict';

angular.module('myApp')

.controller('AppCtrl', function($scope, _) {

  var test = {
    x: 10,
    name: 'Ashish Bajaj'
  }

  var 2ndTest = _.clone(test); //use underscore

});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接