嗨,我有以下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语句应该检查它是否未定义,但是不起作用,谢谢

最佳答案

c是未定义的(不是对象),读取te属性会引发错误。

因为检查typeof c.te === 'undefined'时,javascript会先在执行te之前从c读取属性typeof

if (typeof c === 'undefined') {
   c = {};
}
if (typeof c.te === 'undefined') {
   c.te = [];
}


如果您知道cc.te都是真实的,则可以编写:

c = c || {};
c.te = c.te || [];

关于javascript - AngularJS未定义错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22804570/

10-11 23:31