【发布时间】:2016-02-04 21:17:19
【问题描述】:
我已经开始玩 loddash,并且我有一个小角度应用程序,我正试图开始工作。我已经看到了类似的 SO 问题和 underscorejs。但是看着答案,我无法加载它。
在我的 app.js 文件中,我创建了一个工厂来注册 '_' to window._
var app = angular.module("app", [])
.constant('_', window._);
app.factory('_', ['$window', function ($window) {
return $window._;
}]);
在我的 html 中,我在 Angular 库之前加载了 lodash
<script src="scripts/lodash.js"></script>
<script src="scripts/angular.js"></script>
<script src="scripts/angular-loader.js"></script>
<script src="scripts/angular-animate.js"></script>
<script src="app/app.js"></script>
<script src="app/treeController.js"></script>
<script src="app/treeviewDirective.js"></script>
<script src="app/test.js"></script>
然后在控制器中我尝试注入 '_' 服务/工厂
app.controller("treeController", ['$scope', function($scope, _) {
var vm = this;
function nestAssociation(node, oldCollection, newAggregates) {
var array = [1];
var other = _.concat(array, 2, [3], [[4]]);
var selectedNode = node.parent;
var itemIndex = _.findIndex(oldCollection.children, function (o) { return o.parent == selectedNode; });
console.log(itemIndex);
}
在函数nestAssociation() 内出现错误的页面构建和初始化良好。一旦调用第一个 lodash 函数_.concat,我就会收到一个错误TypeError: Cannot read property 'concat' of undefined,这表明应用程序无法访问 lodash 函数,我认为这是因为服务没有正确注册'_'。
谁能告诉我我错过了什么?
提前致谢
【问题讨论】:
-
不需要工厂和常量...使用其中一个
标签: javascript angularjs lodash