2014-06-22 2 views
1

표시된 입력 요소가 포커스를 잃을 때 각도 지시문에서 입력 요소에 추가하는이 변경 이벤트가 시작되지 않는 이유는 무엇입니까?입력에서 이벤트가 각도 지시문에서 실행되지 않음을 변경하십시오.

업데이트 : jqlite docs say - "jQuery가 지원하는 작업의 하위 집합입니다."... 그리고 이벤트 처리기 아래에 특별히 .change이 나열되어 있습니다. 현재의 답변은 이와 모순됩니다. 저자가 "문서가 잘못되었습니다"또는 "문서에 대한 이해가 잘못됨"이라고 명시 적으로 말하고 싶습니다. 현재 그들은 처음 몇 줄을 건너 뛰고 더 이상 지나간 것처럼 보입니다. 아무도 내가 실제로 잡히지 않은 또 다른 실수가 있고 쉽게 다시 만들 수있을 때 다른 방식을 채택하면 배웁니다.

app.directive('changeDirective', function() { 
    return { 
    link: function(scope, elem, attrs) { 
     return elem.change(function() { 
     alert("Change!"); 
     }); 
    } 
    }; 
}); 

<html ng-app="plunker"> 
    <head> 
    <script data-require="[email protected]" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.min.js" data-semver="1.2.17"></script> 
    <script src="app.js"></script> 
    </head> 
    <body> 
    input with change listener<input type="text" change-directive="true"> 
    <br/> 
    select this to remove focus from other input <input type="number"> 
    </body> 
</html> 

Plunkr

답변

0

Angular.js는 jQuery를 교체로 jqLite를 사용하며 jQuery의 모든 기능을 가지고 있지 않습니다.

jqLite는 크로스 브라우저 호환 방식으로 DOM을 조작하는 각도 수 있도록 jQuery를의 작은, API 호환 하위 집합입니다. jqLite 은 매우 작은 풋 프린트를 갖는 목표 인 과 함께 가장 일반적으로 필요한 기능 만 구현합니다. 대신 on 방법을 사용하여

시도 자세한 정보에 대한 angular.element을위한

return elem.on('change', function() { 
    alert("Change!"); 
}); 

Plunker Link

확인 this link.

Here is a list of all jqLite functions.

+0

내 업데이 트를 참조하십시오. 이 함수 목록은 jqLite 문서와 다릅니다. 그것들은 일치하지 않습니까? https://code.google.com/p/jqlite/wiki/UsingJQLite – iftheshoefritz

0

먼저 AngularJS는 .change 메서드가없는 jQuery의 하위 집합 인 jqLite을 사용합니다. 대신 .on을 사용해야합니다.

둘째, 요소가 포커스를 잃을 때 change 이벤트가 트리거되지 않습니다. 대신 blur 이벤트를 사용하십시오. .on 메서드를 사용하는 경우 blurchange 이벤트를 함께 사용할 수 있습니다.

코드 :

return elem.on('blur change', function() { 
    alert('Change!'); 
}); 

Demo on Plunker

+0

내 업데이트보기 - 내 작품을 고맙게 생각하지만 제 문서는 명시 적으로'.change'가 지원한다고 말합니다. Angular jqLite가이 jqLite와 다른 것을 말하지 않는다면? https://code.google.com/p/jqlite/wiki/UsingJQLite – iftheshoefritz

+0

@FritzMeissner [Angular 's jqLite 소스 코드] (https://github.com/angular/angular.js/blob/master/src/jqLite)를 확인했습니다. .js). 나는 .change 메소드에 대한 언급을 찾을 수 없었다. –

+0

이것들은 jqlite의 다른 구현이라고 말하는거야? – iftheshoefritz

관련 문제