2014-05-19 2 views
0

은이 같은 입력이 : 나는 GUI에서 입력 값을 수정하는 경우 필터각도 JS 입력 바인드 값

<table><tr ng-repeat="row in list|filter:mysearch">...</tr></table> 

에 바인딩

<input ng-model="mysearch.myfield" id="myid"/> 

, 그것은 완벽하게 작동을하지만, 나는 자바 스크립트/JQuery와

$("#myid").val("newvalue") 

입력 값이 업데이트를 통해 그 값을 수정하려고하지만 mysearch.myfield은 modif되어 있지 않은 경우

<li onclick="changeTheInputValue('newvalue1')">newvalue1</li> 
<li onclick="changeTheInputValue('newvalue2')">newvalue2</li> 
... 

function changeTheInputValue(v) { 
    $("#myid").val(v); 
} 

와 내가 클릭 할 때 작동하지 않습니다 : 사실 IED

, 나는 (이것은 페이지로드에 존재하지 않는) 사용자의 작업에 나타나는 목록을 에 "리튬"I는 시도

(입력 값이 업데이트되어 상기 mysearch.myfield 수정되지 UT)

0,123,824

하지만 작동하지 않습니다. ( 아이디어가 있으십니까? angulars 이벤트 루프 외부 실행 자바 스크립트가 각 전까지의 efective되지 않습니다

+0

각도 컨텍스트 외부에서 값을 변경하면 (예 : jQuery에서) 각도가 알지 못합니다 (각도가 관련되지 않는 한 절대 발생하지 않음). 마지막 접근 ** [잘해야한다] (http://jsfiddle.net/ExpertSystem/Pkth3/) **. Angular의 어떤 버전을 사용하고 있습니까? – gkalpak

답변

0

덕분에, 당신은 그것을 적용 할 수 있습니다. 그렇게하기 위해서는 관련 범위를 가져와 변경 사항을 적용해야합니다. 명확하지 않기 때문에 각도 범위를 벗어나는 값을 수정하는 방법과 이유는 무엇이든 할 수 있습니다.

function changeTheInputValue(v) { 
    $("#myid").val(v); 
    angular.element($("#myid")).scope().$apply(); 
} 

변경 사항에 대해 각을 알고 있어야하며 각도를 사용하면 이것이 나쁜 디자인임이 분명합니다. 혼합 된 실행 범위가없는이 동일한 작업을 수행하는 훨씬 좋은 방법이 있습니다. (각도/나머지);

+0

나도 바닥에 섹션을 시도했음을 알아 차 렸니 ??? – gkalpak

+0

레이아웃을 배포하는 방법을 알지 못하고 목록이 컨트롤러 범위 밖에있는 것일 수도 있습니다. –

+0

그럴 수는 있겠습니까? – gkalpak

0

직접 DOM 조작을 사용하여 "#myid" 입력의 값을 수정하고 있습니다. AngularJS는 이것을 인식하지 못합니다. HTML과 mysearch.myfield 값을 올바르게 업데이트하려면 컨트롤러 또는 ng-model 바인딩 또는 이와 유사한 것으로 mysearch.myfield 속성을 직접 수정해야합니다.

이 문제는 AngularJS가 DOM을 수정하는 방법과 관련이 있습니다. jQuery를 사용하여 DOM을 수정하면 각도를 피할 수 있습니다. Angular는 Angular 자체를 통해 직접 수행하는 경우를 제외하고는 DOM에서 무언가를 변경했는지 여부를 알 수 없습니다. 특히 궁금한 사항이 있으면 $compile$digest 서비스에 대해 읽어보십시오.

희망 사항은 피사체를 밝히는 데 도움이되기를 바랍니다.

+0

하단에 'I tried tried'섹션이 있습니까? – gkalpak