2012-10-08 4 views
9

뷰 내부에서 입력을 바인딩하는 데 문제가 있습니다. 컨트롤러 범위에 바인딩 할 것이라고 생각했지만 하위 범위에 바인딩 된 것으로 보이므로 위에서 업데이트하지 않습니다.AngularJS : 뷰 내부에서 예상 범위에 바인딩되지 않음

다른 항목은 그들이 ng-repeat (나는 이유가 확실하지 않음) 내부에 있다면 예상대로 바인딩됩니다.
http://jsfiddle.net/hMpsB/1/

그것이 NG 반복 내부 아니라면 올바른 범위에 입력을 결합하는 가장 좋은 방법은 무엇입니까 :

다음은 예입니다? 당신의 예에서

답변

16

당신이 더 행운 바인딩이있을 것이다 당신이 같은 객체 대신 원시 유형 $scope.test :

$scope.test = { val: "test value" }; 

당신은 작업 예를 들어 this fiddle을 볼 수 있습니다.

ngView에서 생성 된 하위 범위는 값을 복사하며 원본 $scope.test은 기본 문자열이므로 부모 값에 대한 링크가 없으므로 입력에서 하위 범위 복사본을 수정하게됩니다. 객체에 바인딩 할 때 하위 범위는 객체 참조 사본을 가지고 있지만 궁극적으로 객체의 동일한 인스턴스를 수정합니다.

여러 컨트롤러에서 데이터를 유지하도록 서비스를 만드는 방법에 대한 자세한 내용은 this question을 참조하십시오 (질문과 조금 비슷합니다).

this answer에 설명 된대로 $parent을 사용할 수도 있습니다.하지만 Mark는 문서화되지 않았으며 다른 하위 범위가 어딘가에 소개되면 지저분해질 수 있습니다.

관련 문제