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

时间:2015-05-07 13:10:10

标签: angularjs lodash

我正在尝试在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._ = _;)。

是否有可以实现此目的的一次性/单一地点更改/配置/代码?

注意:另一个问题How to make lodash work with Angular JS?专门讨论在ng-repeat中使用lodash。但我的问题是在每个视图模板(包括指令视图模板)中使用lodash。这就是我发现使用隔离范围指令的限制。

1 个答案:

答案 0 :(得分:0)

这就是我这样做的方式:

步骤1:在index.html中包含underscore-min.js:

<!-- underscore to be included with angular js -->
<script src="lib/underscore/underscore-min.js"></script>

步骤2:创建一个&#39; _&#39;您可以注入所需的所有控制器的服务:

'use strict';

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

步骤3:通过注入&#39; _&#39;

来随时随地使用它
'use strict';

angular.module('myApp')

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

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

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

});