我看到了许多与 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。所以这不是问题。
此问题已解决
答案 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)
嗨, 您确定函数参数(“列表”)是数组吗?似乎未定义。