Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:将指令应用于所有匹配的标记_Javascript_Html_Angularjs - Fatal编程技术网

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

Javascript AngularJS:将指令应用于所有匹配的标记,javascript,html,angularjs,Javascript,Html,Angularjs,我已经构建了一个大型web表单(超过100个字段),我想添加AngularJS,让用户能够在表单中键入内容,并在键入时运行Javascript将角度模型存储在数据库中。显然,我不希望每次用户更改一小段数据时都向数据库发送数据,因此我希望使用ng model options指令告诉Angular仅在500毫秒左右后启动updateOn 我真的不想对HTML中的每个标记应用大量的角度,这需要大量的输入,如果我想更改某些内容,那么需要在很多地方进行手动更新。我真正想做的是类似于$(“input”).s

我已经构建了一个大型web表单(超过100个字段),我想添加AngularJS,让用户能够在表单中键入内容,并在键入时运行Javascript将角度模型存储在数据库中。显然,我不希望每次用户更改一小段数据时都向数据库发送数据,因此我希望使用
ng model options
指令告诉Angular仅在500毫秒左右后启动
updateOn

我真的不想对HTML中的每个
标记应用大量的角度,这需要大量的输入,如果我想更改某些内容,那么需要在很多地方进行手动更新。我真正想做的是类似于
$(“input”).setDirective()
或类似的事情(如果它存在的话)。我意识到我是以jQuery类型的方式来考虑这一点的,所以我很想听到一种“正确的”角度的方式,将相同的指令集应用于DOM中与某个选择器匹配的每个元素


谢谢

您只需为
标记创建如下指令:

var-app=angular.module('app',[]);
app.directive('input',function(){
返回{
限制:'E',
链接:功能(范围、元素){
元素[0]。style.backgroundColor=“红色”;
}
};
});

演示:

对@Bodzio answer稍作修改

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>

我发现有人问了一个类似的问题,我只是不知道如何搜索它:。使用它作为我的模板,我想出了如何将新指令应用于包含自定义指令的所有内容。我不知道如何将它直接应用于所有的
标记,但将
saveme
指令添加到我所有的
并不需要太长时间

为了避免无用的调用,请使用对象属性作为ng模型,如下所示:ng model=“storage[fieldName]”。在控制器中的存储器上添加观察程序,如果数据已更改,则将changeFlag设置为true。在setTimeout中-如果要使用一个-,请检查是否追加了更改,如果为true,则启动XHR查询并重置changeFlag:)这样,您将仅在需要时调用服务器。这很好,它向我展示了如何“选择”所有
标记;但我仍然不知道如何向
标记添加指令。假设我想将
ng model=attributes.name
添加到所有的
标记中,既然我已经选择了
ng model
指令,我怎么才能将它添加到标记中呢?我不知道这是否可能。。。但是您可以访问input元素(链接函数中的第二个参数),在这里您可以为事件(
element.on(“change”,function(){…});
)添加事件侦听器,并且在不绑定数据的情况下完成工作……这很好,它向我展示了如何“选择”所有
标记;但我仍然不知道如何向
标记添加指令。假设我想将
ng model=attributes.name
添加到所有的
标记中,既然我已经选择了
ng model
指令,我该如何将其添加到标记中?如果您的问题已经解决,请您将其标记为答案:)或者让我知道您面临的问题。
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!";
          }
      }
  };
});