无法从角度控制器

时间:2016-02-04 21:17:20

标签: javascript angularjs lodash

我开始玩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函数,我认为这是因为该服务未正确注册'_'

有人可以告诉我我错过了什么吗?

提前致谢

1 个答案:

答案 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);
    }