将underscore.js变量附加到angular变量是否可以?所以我可以称下划线为:angular._
?由于下划线不太可能在测试时被模拟,我们不能声明全局变量?
如果是这样,我应该添加angular.js应用程序的哪一部分?
答案 0 :(得分:11)
我更喜欢在它自己的可注射模块中创建一个包装器服务,如:
angular.module('underscore.service', [])
.factory('_', function () {
return window._; // assumes underscore has already been loaded on the page
});

如上所述,您应该像往常一样在html中包含angular之前的underscore.js。
此方法允许在测试环境中访问下划线。
答案 1 :(得分:7)
我认为最好不要将下划线附加到角度,而是直接使用它。
答案 2 :(得分:0)
答案 3 :(得分:0)
如果您使用ES6模块,您只需导入它,如果您使用iife方法,您可以将其注册为常量,然后将其注入
angular.module("app").constant("_", _);
我仍然会推荐es6架构。您可以查看this
答案 4 :(得分:0)
您将使用哪种测试套件?
如果你正在使用业力,你可以在files选项下的karma配置中添加任何第三方lib。这些文件将在浏览器中提供,并可供您的测试访问。无需将lib包装在角度服务中或将其附加到角度。
答案 5 :(得分:0)
如果您想使用下划线,只需将其添加到您的范围
即可在您的控制器中执行以下操作
$scope._ = _;
现在你使用html模板中的所有下划线功能,如
<div ng-repeat="value in _.filter(list, ...)"></div>