TypeError:无法读取Angular.js中未定义的属性“ 0”

时间:2019-03-21 10:52:28

标签: javascript angularjs

我看到了许多与 TypeError:无法读取未定义的属性“ 0” ,但是它们都无法解决我的错误。

我的要求是onClick按钮(例如:ng-click =“ addRow(tester.devices)”)我必须调用一个函数-

如果已经存在/正在调用devicelist,则无需定义_scope.tester.devices = [],否则将定义_scope.tester.devices = [];以避免错误: 无法读取未定义的属性“ unshift”

我的代码如下

_scope.addRow = function (list) {
        _scope.uniqueId = Math.round((Math.random() * 10) * 10000);
        if (_scope.tester.devices) {
            _scope.tester.devices.unshift({
                'name': '',
                'id': '',
                'uniqueId': _scope.uniqueId,
            });


        } else {
            _scope.tester.devices = [];
            _scope.tester.devices.unshift({
                'name': '',
                'id': '',
                'uniqueId': _scope.uniqueId,
            });
        }
        _scope.modifyField[list[0].uniqueId] = true;
    }

Edit1:我将$ scope定义为_scope。所以这不是问题。

此问题已解决

3 个答案:

答案 0 :(得分:1)

将数组传递给函数,似乎您将错误的参数传递给函数_scope.addRow()

将数组传递给函数后,对我来说效果很好。

答案 1 :(得分:1)

我通过将_scope.modifyField[list[0].uniqueId] = true;修改为_scope.modifyField[_scope.uniqueId] = true;来解决了这个问题。

不幸的是,我无法删除我的问题,因为有人根据堆栈溢出规则为此花费了时间。

代码如下:

 _scope.addRow = function (list) {
        _scope.uniqueId = Math.round((Math.random() * 10) * 10000);
        if (_scope.tester.devices) {
            _scope.tester.devices.unshift({
                'name': '',
                'id': '',
                'uniqueId': _scope.uniqueId,
            });
             _scope.modifyField[list[0].uniqueId] = true;

        } else {
            _scope.tester.devices = [];
            _scope.tester.devices.unshift({
                'name': '',
                'id': '',
                'uniqueId': _scope.uniqueId,
            });
        }
        _scope.modifyField[_scope.uniqueId] = true;
    }

答案 2 :(得分:0)

嗨, 您确定函数参数(“列表”)是数组吗?似乎未定义。