2016-10-31 6 views
1

코드가 jquery .prop 함수를 통해 checked 속성을 설정하려고합니다. 그러나 ng-model은 여전히 ​​비어 있습니다. jquery 속성으로 확인란을 선택하면 각도 모델이 업데이트되지 않습니다.

제가 수동 선택란 후 겨 모델이되는 바인더 제본을 확인하고 그 값이 설정
<input type="button" id="mybutton" value="click"> 
<input type="checkbox" id="mycheckbox" name="one" ng-model="arr[1]" value="1" /> 

{{arr}} -- is blank when checked with jquery and not blank when manually checked. 

$('document').ready(function(){ 
    $("#mybutton").on('click',function(){ 
     $("#mycheckbox").prop('checked',true); 
    }); 
}); 

. jQuery를 사용하여 확인란을 선택하면 ng-model을 업데이트하는 방법을 알려주십시오.

+0

대신'ng-checked = "arr [1]"'을 사용해 보셨나요? 범위 안에 'arr'이 있습니까? –

+0

중복 된 질문 : http://stackoverflow.com/questions/17109850/update-angular-model-after-setting-input-value-with-jquery – Gabriel

+0

@ A.Gille 예, 수동으로 설정하면 모델이 설정됩니다. 버튼을 클릭해도 트리거되면 설정되지 않습니다. 버튼 클릭을 통해 체크 박스가 선택되었을 때 –

답변

0

각도와 같은 바인딩 된 속성을 다시 검사 할 때는 when digest runs을 읽어야합니다.

은 $ 범위와 기능을 감싸 $ applyAsync이 같은() 메소드.

$scope.$applyAsync($("#mycheckbox").prop('checked',true)); 

이이 컨트롤러 내부에서 수행되어야한다.

범위가없는 경로에 아무 것도 수행하지 않으려면 $ timeout을 사용할 수 있습니다.

그리고 다시 한 번. 모든 dom 조작은 applyAsync 및 기타와 같은 다양한 각도 도구에 액세스 할 수있는 지시문/구성 요소 내에서 수행해야합니다.

0

직접 모델 값을 true로 설정할 수 있습니다. 체크 박스가 자동으로 체크됩니다. jquery를 사용할 필요가 없습니다. ng-click을 사용하여 모델 값을 변경할 컨트롤러에 하나의 함수를 호출 할 수 있습니다.

관련 문제