지침

2013-07-17 4 views
2

의 기능을 연결에서 자식 요소에 NG 변화를 추가 나는 모든 자식 입력 태그에 동적으로 NG 변화 지시문을 추가해야 지시자를 생성 -change 지시어가 실행되고 있지 않습니다. DOM 요소에 추가 된 것을 볼 수 있지만 값이 변경되면 실행되지 않습니다.지침

이상한 점은 ng-click으로 시도하면 작동한다는 것입니다.

이것이 ng-change의 버그인지 또는 내가 somehting을 잘못했는지 알지 못합니다.

바이올린은 NG 버튼으로 클릭 (입력 클릭) http://jsfiddle.net/dimirc/fq52V/

바이올린 내가 모든 이동하면 내가이 일을 할 수있다 (변화를 발사한다) http://jsfiddle.net/dimirc/6E3Sk/

BTW NG-변화입니다 함께 함수를 컴파일해야하지만, 지시어의 속성을 평가할 수 있어야하고 컴파일 fn의 지시문에 액세스 할 필요가 없습니다.

감사합니다.

답변

1

당신의 인생을 열심히 만드십시오. 모든 각도 컴파일/평가/등 물건을 할 필요가 do'nt - 자바 스크립트는 각 끝에 :

if (shouldRun) { 
    iElement.find(':input[ng-model]').on('change', function() { 
    this.form.submit(); 
    }); 
    console.log("Done"); 
} 

http://jsfiddle.net/lgersman/WuW8B/1/

몇 가지 참고 사항 : 여기에 수정 된 (현재 작업) 예제 참조 접근 방식 :

  • ng-change는 javascript 변경 이벤트에 직접 매핑됩니다. 누군가가 INPUT 요소에 잘라 내기/복사/붙여 넣기를 사용하면 제출 처리기가 호출되지 않습니다. 더 나은 해결책은 모든 수정 사례를 포착하는 "입력"이벤트를 사용하는 것입니다.

  • 변경/입력 등의 기본 이벤트는 브라우저의 상위 DOM 요소에 버블 링됩니다. 그래서 각 입력 대신에 변경 리스너를 폼에 첨부하는 것과 똑같을 것이다.

  • 모든 작업을 자동 저장하려면 제출 처리기를 믿을 수 없을 정도로 많이 불러야합니다. 보다 나은 접근 방법은 제출 이벤트 위임을 느리게/조절하는 것입니다 (http://orangevolt.blogspot.de/2013/08/debounced-throttled-model-updates-for.html 참조).

  • 당신이 완전히 변화 핸들러 물건을 건너 뛰고 suimply 잘 될 것입니다 및 모든 (각 모델 편집에 의한 업데이트 중에 일어날 것) 변경의 범위 시청 EVERY 편집 자동 저장하려면 :

    범위를. watch (function() { eElement [0] .submit(); });