您好我关注html
<tbody ng-repeat="c in forms">
<tr>
<td> <input type="text" ng-model=c.name /> </td>
<td> <input type="text" ng-model=c.ac /> </td>
</tr>
<tr ng-repeat="a in c.te">
<td> <input type="text" ng-model=a.name /> </td>
<td> <input type="text" ng-model=b.ac /></td>
</tr>
</tbody>
<button ng-click="add(c)">Add</button>
<button ng-click="submit(c)">Crate account</button>
在我的控制器中
$scope.forms = [{
"name" : "form1", "ac": 251
}, {
"name": "form2", "ac": 252
}, {
"name": "form3", "ac": 253
}];
$scope.addRows = function (c) {
alert(form);
if (typeof c.te == 'undefined') {
c.te = [];
}
alert("pushing");
c.te.push({ name: '', ac: ''});
};
我在if(typeof c.te =='undefined')说
时不断收到错误Error: c is undefined
请告诉我这里有什么问题。 if语句应该检查它是否是未定义的,但它确实可以工作谢谢
答案 0 :(得分:2)
您收到错误是因为button
标记位于ng-repeat
指令之外。
<tbody ng-repeat="c in forms">
<tr>
<td>
<input type="text" ng-model=c.name />
</td>
<td>
<input type="text" ng-model=c.ac />
</td>
</tr>
<tr ng-repeat="a in c.te">
<td>
<input type="text" ng-model=a.name />
</td>
<td>
<input type="text" ng-model=b.ac />
</td>
</tr>
</tbody>
<button ng-click="add()">Add</button>
<button ng-click="submit()">Crate account</button>
您的控制器代码也很奇怪 - 您想要添加新记录,但您似乎接受了参数?
编辑:如果它已经不明显,因为按钮在ng-repeat
指令之外,c
参数不再可用于按钮标记。因此,当调用范围函数时,参数为undefined
,因而是错误。
答案 1 :(得分:1)
c
未定义(而不是对象),读取te
属性会引发错误。
因为在检查typeof c.te === 'undefined'
时,javascript会在执行te
之前首先从c
读取属性typeof
。
if (typeof c === 'undefined') {
c = {};
}
if (typeof c.te === 'undefined') {
c.te = [];
}
如果你知道c
和c.te
都应该是真的,你可以写:
c = c || {};
c.te = c.te || [];
答案 2 :(得分:0)
if (typeof c.te == 'undefined') {
c.te = [];
}
在这里,您要检查c.te
是否未定义。首先,您需要检查c是否未定义。这就是错误所说的。