AngularJS:将指令应用于所有匹配的标记

时间:2014-08-10 19:55:45

标签: javascript html angularjs

我有一个我构建的大型Web表单(超过100个字段),我想添加AngularJS以使用户能够键入表单并运行Javascript以在键入时将Angular Model存储在数据库中。很明显,每当用户改变一小段数据时,我都不想将数据发送到数据库,所以我想使用ng-model-options指令告诉Angular只发起updateOn大约500ms后。

我真的不想对我的HTML中的每个<input>标记应用大量的角度,但是很多打字,如果我想要改变某些内容,那么&# #39;有很多地方可以通过并手动更新。我真正喜欢做的事情就像$("input").setDirective()或某些事情(如果它存在的话)。我意识到我是以jQuery类型的方式思考这个问题,所以我很有兴趣听到#34;正确的&#34;将同一组指令应用于我的DOM中与某些选择器匹配的每个元素的角度方式。

谢谢!

3 个答案:

答案 0 :(得分:4)

对@Bodzio回答的修改很少

<强> HTML

<div ng-app="app">
    <input type="text" name="something" />
    <input type="text" />
    <input type="text" />
    <input type="text" name="different" />
    <input type="radio" name="different" />
</div>

<强> JS

var app = angular.module('app', []);

app.directive('input', function() {
  return {
      restrict: 'E',
      link: function (scope, element, attributes) {
          // filter the element using attributes
          if (attributes.type === "text" && attributes.name) {
              element[0].value = "It works!";
          }
      }
  };
});

<强> JSFIDDLE DEMO

答案 1 :(得分:1)

你可以像这样为<input>标签创建一个指令:

var app = angular.module('app', []);

app.directive('input', function() {
  return {
      restrict: 'E',
      link: function (scope, element) {
          element[0].style.backgroundColor = "red";
      }
  };
});

演示:http://jsfiddle.net/zjdscakc/

答案 2 :(得分:0)

我发现有一个类似的问题,我只是不知道如何搜索它:Add directives from directive in AngularJS。使用它作为我的模板,我想出了如何将新指令应用于包含自定义指令的所有内容。我无法弄清楚如何直接将其应用于所有<input>代码,但向saveme所有<input>添加{{1}}指令并不需要太长时间。 ;)