2013-05-12 2 views
2

내 지침에서 격리 범위를 만들고 코드에서 ngModel에 할당합니다. 내가 scope.ngModel에 할당 link 기능 내부AngularJS : 요소에 특성이 설정되어 있지 않지만 범위 값에 할당

scope: { 
    ngModel: '=', 
    value: "=", 
    placeholder: "@" 
} 

: 여기 내 분리 범위입니다. 요소에 ng-model 특성이 설정되어 있으면 제대로 작동하지만 오류가 아닌 경우에는 오류가 발생합니다.

Error: Non-assignable model expression: undefined 

속성이 존재하는지 확인하는 가장 좋은 방법은 무엇입니까? element.hasAttribute으로이 작업을 명시 적으로 수행해야합니까, 아니면 완전히 잘못하고 있습니까?

+0

선택적 양방향 바인딩 ('=')을 사용할 수 없습니다. 그러나 선택적으로 모델을 ['?^require'] (http://docs.angularjs.org/guide/directive) 할 수 있고 그것을 링크 매개 변수에 4 번째 매개 변수로 주입해야합니다. – Yoshi

답변

1

지시문에서 ngModel 속성이 선택적인 경우 범위 변수에 값을 할당하기 전에 존재 여부를 확인해야합니다. 그렇지 않으면 각도로 인해 오류가 발생합니다. 나는 그것이 존재하는지 확인하기 위해 if(attrs.ngModel){...} 또는 element.attrs('ngModel')을 사용할 것입니다.

ngModel으로는 지시 링크 기능에서 ngModelController을 사용할 수도 있습니다. 이 작업은 require:'^ngModel' (선택 사항 인 경우 ^)으로 수행하고 ngModelController는 링크 컨트롤러 (link:function(scope,element,attrs,ngModelController){ ... })의 네 번째 인수로 사용할 수 있습니다.

관련 문제