2013-06-10 2 views
1

이것은 바보 같은 질문처럼 들리지만 나는 몇 시간 동안이 질문에 매달 렸습니다. 놀랍게도 내가 간과하고있는 무언가가 있어야합니다.각도 범위 변수는 항상 정의되지 않음

나는 항목의 목록을 출력하는 NG-반복 지시자를 가지고 :

<div ng-controller="MyCtrl"> 
    <div ng-repeat="foo in bars"> 
    .... 
    </div> 

다음 목록의 끝에서 나는 목록에 추가하는 형태있어 :

function MyCtrl($scope) { 
    $scope.addStuff= function() { 
     alert($scope.valueToAdd); 
    } 
} 

그러나 $scope.valueToAdd ALW :

 <div class="add"> 
      <input ng-model="valueToAdd" class="weight" /> 
      <a ng-click="addStuff()" class="button-small"> + Add</a>  
     </div> 
</div> 

addStuff() 방법은 내 컨트롤러에 ays는 나에게 undefined를 준다.

무엇이 누락 되었습니까?

EDIT : http://plnkr.co/edit/YoGdx8?p=preview

+1

작동하도록 보인다 잘 ([plunker (http://plnkr.co/edit/LXc5ygyqXiKH9Fi1N9gd?p=preview)) – robertklep

+0

흠. 내가 다시 한번 보도록하겠습니다. 예를 들어 복사/붙여 넣기 한 코드 외부에있을 수 있습니다. 보통 ;-) – HaukurHaf

+1

어쩌면 valueToAdd가 MyCtrl의 범위를 벗어납니다. – Atrix1987

답변

4

ng-repeat 그 반복 구간마다 새로운 영역을 생성하고 그래서 valueToAdd는 외부의 자식 그 내측 영역에 변수에 결합된다 : 여기서이 문제가 재생되는 punker이다 범위. addStuff이 호출되면 범위 상속을 통해 외부 범위의 메서드에 액세스하기 때문에 작동하지만 참조하려고하는 변수는 해당 외부 범위에 정의되어 있지 않습니다.

addStuff 대신에 값을 전달보십시오

ng-click="addStuff(valueToAdd)" 

Here is a forked Plunk

+0

빙고! 그것은 아주 많은 의미를가집니다. 감사! – HaukurHaf

관련 문제