我开始玩loddash并且我有一个小角度应用程序,我正在努力工作。我已经看到围绕这个和下划线的类似的SO问题。但是看看答案,我无法加载它。
在我的app.js文件中,我创建了一个工厂来注册'_' to window._
var app = angular.module("app", [])
.constant('_', window._);
app.factory('_', ['$window', function ($window) {
return $window._;
}]);
在我的html中,我在角度库
之前加载了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函数,我认为这是因为该服务未正确注册'_'
。
有人可以告诉我我错过了什么吗?
提前致谢
答案 0 :(得分:3)
我认为您在控制器声明中缺少_引用?试试这个:
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);
}