多个输入上的角度ngBlur

时间:2016-06-29 17:55:49

标签: javascript angularjs

我正在尝试在编辑片段后“保存”网页中的所有内容。 IE,用户点击输入,输入一些数据,一旦他/她点击其他地方,我想运行一个功能来收集所有模型数据并将其保存在浏览器本地存储中。

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

这是正常的做法,但让我说我有大量的投入:

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

我可以做些什么来将ng-blue效果应用于网页的所有inputs,还是我必须将ng-blue属性放入每个input

2 个答案:

答案 0 :(得分:0)

您可以创建一个自定义指令来执行此操作。这是对这个问题的回答:

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

Haven没有对此进行测试,但它应该让你走上正确的轨道。

.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>

答案 1 :(得分: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); });