2014-04-02 2 views
2

안녕 나는 다음과 같은 한 HTML 내 컨트롤러에서AngularJS와 정의되지 않은 오류

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

나는 (대해서 typeof c.te == '정의되지 않은')의 경우에 오류가

Error: c is undefined 
을 자꾸

무엇이 잘못되었는지 알려주세요. if 문은 정의되지 않았는지 확인하지만 제대로 작동하는지 확인해야합니다. 감사합니다.

답변

1

cte 속성을 읽는 중 정의되지 않았기 때문에 (개체가 아님) 오류가 발생합니다.

typeof c.te === 'undefined'을 확인하면 자바 스크립트가 을 수행하기 전에 tec에서 먼저 읽습니다. 당신이 truthy해야 모두 cc.te를 알고있는 경우

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

당신은 쓸 수 있습니다 :

c = c || {}; 
c.te = c.te || []; 
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> 

컨트롤러 코드도 이상합니다. 새 레코드를 추가하려고하지만 매개 변수를 수락하는 것 같습니다.

EDIT : 단추가 ng-repeat 지시문을 벗어 났으므로, 아직 명확하지 않은 경우 c 인수를 더 이상 단추 태그와 함께 사용할 수 없습니다. 따라서 scope 함수가 호출 될 때 매개 변수는 undefined이며 따라서 오류가 발생합니다.

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

여기서 c.te이 정의되지 않았는지 확인하려고합니다. 먼저 c가 정의되지 않았는지 확인해야합니다. 그게 오류라고합니다.