将下划线或 lodash 附加到 angular

Attaching underscore or lodash to angular

可以将 underscore.js 变量附加到 angular 变量吗?所以我可以像这样调用下划线: angular._ ?由于下划线不太可能在测试时被嘲笑,而且我们不能声明全局变量?

如果是,我应该将其添加到 angular.js 应用程序的哪一部分?

我觉得angular不加下划线直接用比较好

我见过的最好的方法是依赖注入。

看看这个 link 到 ng-underscore link

这个linkangular-下划线link

我更喜欢在它自己的可注入模块中创建一个包装器服务,如下所示:

angular.module('underscore.service', [])
.factory('_', function () {
  return window._; // assumes underscore has already been loaded on the page
});

如前所述,您应该像往常一样在 html 中的 angular 之前包含 underscore.js。

此方法允许在测试环境中访问下划线。

如果你使用 ES6 模块,你可以只导入它,如果你使用 iife 方法,你可以将它注册为一个常量,然后再注入它

angular.module("app").constant("_", _);

我仍然会推荐 es6 架构。你可以看看this

您将使用什么测试套件?

如果您使用的是业力,您可以在文件选项下的业力配置中添加任何第三方库。这些文件将在浏览器中可用,并且可供您的测试访问。无需将库包装在 angular 服务中或将其附加到 angular。

如果您想使用下划线,只需将其添加到您的范围即可

在控制器中执行以下操作

$scope._ = _;

现在您可以在 html 模板中使用所有下划线功能,例如

<div ng-repeat="value in _.filter(list, ...)"></div>