sourcecode

angularjs - ng-switch가 ng-model을 바인드하지 않음

copyscript 2023. 4. 4. 21:57
반응형

angularjs - ng-switch가 ng-model을 바인드하지 않음

[ Title 3 ]를 클릭하여 입력된 값이 UI에 반영되어 있어도 텍스트 상자에 값을 입력하면 resolf http://embed.plnkr.co/nVCmukG5abpi1Y4ZHkrq 이 표시됩니다.[ click ]버튼을 클릭하면 스코프 속성 $test에 바인딩되지 않습니다.

ng-switch에 무슨 문제가 있는지 모르겠어요.혹은 제가 뭔가 잘못하고 있는 것 같습니다.도움에 감사드립니다!!!

http://embed.plnkr.co/nVCmukG5abpi1Y4ZHkrq

이는 다음 이유로 인한 범위 상속 문제입니다.ng-switch독자적인 범위를 만듭니다.

자주 하는 권장사항 중 하나는 항상 다음을 사용하는 것입니다.dot모델입니다.그 이유는 컨트롤러 스코프 항목이 프리미티브가 아닌 오브젝트일 경우 서브스코프가 초기 오브젝트에 대한 참조를 작성하기 때문입니다.모델이 원시 모델인 경우 원본은 업데이트되지 않습니다.

예를 들어 다음과 같습니다.

<input ng-model="test.value" placeholder="pre" type="text" />
$scope.test={value:''}

또 다른 접근법은$parenthtml 모델 마크업:

<input ng-model="$parent.test" placeholder="pre" type="text" />

사용방법dot방법론은 더 깊이 중첩된 범위에 대해 고려할 필요가 없으므로 이러한 문제를 피하는 것이 좋습니다.

를 사용한 데모test.value모델명 : http://plnkr.co/edit/CkiF55bLXsYzR6ZjcrJp?p=preview

에 관한 레퍼런스dot모델(판독서): https://github.com/angular/angular.js/wiki/Understanding-Scopes

이는 실제로 ng-switch 내부에 자스코프를 작성하기 때문입니다.그럼 또 하나test속성은 ngSwitch 디렉티브에 속하는 스코프에 존재합니다.처음에는 상위 범위의 값이 표시되지만, 편집할 때는 초기값이므로 상위 범위가 아닌 하위 영역에서만 값이 편집됩니다.여기에는 프로토타입 상속이 적용되지 않습니다(그러나 이것이 바로 우리에게 필요한 것입니다).

버튼을 클릭하면 버튼이 alerting/console.log로 상위 범위에 속성을 기록합니다.아이가 바꿀 수 없는 거죠

이 용도를 수정하려면$parent.testngSwitch의 ng-model Atribute:

토막:

<span class="pew"  ng-switch-when="title2">
  <input ng-model="$parent.test" placeholder="pre" type="text" />
  {{test}}
</span>

그리고 여기 당신의 플런커가 작동하는 포크가 있습니다.

비슷한 문제가 발생한 적이 있으며 컨트롤러에 스코프 변수를 생성하여 이를 사용하여 해결했습니다.ng-include그리고.ng-switch이렇게 네스트된 경우ng-include님은 에 있습니다.ng-switch계속해서 스코프 변수를 직접 사용할 수 있습니다.

자여기서 「」는 「」( 「」),ng-include/ng-switch)는 부모 스코프(컨트롤러 스코프)에서 확장되므로 이들 자녀 스코프에서 부모 스코프에 문제없이 직접 액세스할있습니다.

「」를 사용합니다.$parent will will will will will will like like like 。$parent.$parent.$parent.someProp

플랭크 예시: http://plnkr.co/edit/8UGH7nUpFmATiXfkYSwr?p=preview

언급URL : https://stackoverflow.com/questions/15593299/angularjs-ng-switch-does-not-bind-ng-model

반응형