javascript - 无法从 Angular Controller 读取 lodash 属性

标签 javascript angularjs lodash

我已经开始使用 loddash,并且我有一个小的 Angular 应用程序,我正试图开始工作。我已经看到关于这个和 underscorejs 的类似 SO 问题。但是查看答案我无法加载它。

在我的 app.js 文件中,我创建了一个工厂来将 '_' 注册到 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>

然后在 Controller 中我尝试注入(inject) '_' service/factory

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 函数我认为这是因为服务没有正确注册 '_'

谁能告诉我我错过了什么?

提前致谢

最佳答案

我认为您在 Controller 声明中缺少 _ 引用?试试这个:

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

关于javascript - 无法从 Angular Controller 读取 lodash 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35211799/

相关文章:

html - 嵌套列表元素上的选择框宽度相同

javascript - 使用 AngularJS 和 Lodash 将数组转换为字符串

javascript - 无法在子组件中访问 c​​lass.contextType

javascript - 如何使用 AngularJS 设置输入框以清除焦点上的默认值

支持全局事件的 Javascript ajax 库

javascript - Angular js,关于ng-change如何更新其他选择控件的选项

javascript - Restangular - _.contains() 不是函数

javascript - 使用 Lodash 复制除一个字段外的所有字段,而不使用 Object.assign()

javascript - 为什么调整大小事件只触发一次

javascript - ckeditor 将样式应用于选择