2016-06-29 2 views
0

현재 편집을 마친 후 웹 페이지의 모든 콘텐츠를 "저장"하려고합니다. IE에서 사용자가 입력을 클릭하고 데이터를 입력하면 다른 곳을 클릭하자마자 모든 모델 데이터를 모아 브라우저 로컬 저장소에 저장하는 기능을 실행하려고합니다.여러 입력에서 각도 ngBlur

<input ng-blur="functionName()" /> 
그 일의 정상적인 방법입니다

만의 내가 입력의 톤이 있다고 가정 해 봅시다 :

<input ng-blur="functionName()" /> 
<input ng-blur="functionName()" /> 
<input ng-blur="functionName()" /> 
<input ng-blur="functionName()" /> 

모든 페이지의 inputs거나 내가 ng-blue 효과를 적용 할 수있는 일이 있어야합니다 모든 inputng-blue 속성을 입력 했습니까?

+0

사용 NG-모델과 객체에 해당 값을 할당하고 컨트롤러에서 개체에 시계를 설정합니다. –

+0

@ JohnHalbert 실제로 대부분의 입력은''입니다. 컨트롤러에서이 모델 변경을 볼 수 있습니까? – Kenny

답변

0

사용자 지정 지시문을 만들 수 있습니다. 이이 질문의 대답에서 적응 :

AngularJS 1.3 - `ng-change`-like functionality for the entire form

이 테스트를하지 않은,하지만 그것은 바른 길에 당신을 얻을 것이다. 및
.directive('inputsOnBlur', ['$parse', function($parse){ 
    return { 
    link: function(scope, element, attrs){ 
     var cb = $parse(attrs.inputsOnBlur); 
     element.find('input').on('blur', function(){ 
      cb(scope); 
     }); 
    } 
    } 
}]); 

는이 기능을 사용하려면 물론

<form inputs-on-blur="doSomething()"> 
    <input /> 
    <input /> 
    <input /> 
</form> 
+0

의견을 보내 주셔서 감사합니다. 이것은 또한 모든 입력에 대한 컨테이너 인'div'에'inputs-on-blur '를 넣음으로써 작동할까요? 양식을 사용하지 않으므로 입력 태그 만 사용하십시오. – Kenny

+0

그래, 모든 요소 유형에서 작동해야합니다. – DerekMT12

+0

위대한, 나는 그것을 곧 시험해 볼 것이다. 고맙습니다! – Kenny

0

이 가능합니다. 입력 태그에 data-ng-blur을 동적으로 추가해야합니다. 컨트롤러의 코드가 있어야한다 : 각

var inputList = Array.prototype.slice.call(document.getElementsByTagName('input')); inputList.forEach(function (input) { input.setAttribute('data-ng-blur', 'functionName()'); $compile(angular.element(input))($scope); });

+0

그래서 기본적으로 이것은 프로그래밍 방식으로'ng-blur '를 모든 입력에 넣습니다. 맞습니까? – Kenny

+0

예, 페이지의 모든 입력에'data-ng-blur '를 적용합니다. 'ng-blur '가 어떤 종류의 입력에 연결되어야 하는지를 지정하고 싶다면'document.querySelectorAll ('input [type = "text" ')'를 대신 사용할 수 있습니다. –

관련 문제