使用AngularJS禁用拼写检查属性

时间:2015-11-15 23:43:42

标签: angularjs attributes

有没有更简单的方法将spellcheck="false"属性动态添加到AngularJS应用程序中的所有表单中,而不是进入AngularJS应用程序中的所有视图?

添加后,应用程序中的每个表单都是这样的:

<form spellcheck="false">

3 个答案:

答案 0 :(得分:2)

Angular实际上会将HTML FORM元素覆盖为指令。

https://github.com/angular/angular.js/blob/master/src/ng/directive/form.js

您可以在应用配置中修饰此指令,如下所示:

angular.module('app', [])
.config(['$provide', function ($provide) {

  $provide.decorator('formDirective', ['$delegate', function ($delegate) {

    var formDirective = $delegate[0];
    var oldCompile = formDirective.compile;

    formDirective.compile = function (tElement, tAttrs, transclude) {
      // get original links
      var compile = oldCompile ? oldCompile.apply(this, arguments) : {};

      tElement.attr("spellcheck", "false");

      return compile;
    };

    return $delegate;

  }]);

}]);

答案 1 :(得分:1)

为什么在DOM加载后你只是add it with jQuery

$(document).ready(function () {

    // ... cool onLoad stuff

    // Set form spellcheck attributes to false
    $('form').attr('spellcheck', false);
});

答案 2 :(得分:0)

所有主流浏览器都支持

setAttribute 。&#xA;所以简单的方法如下(不需要jQuery):

&#xA;&#xA;
  angular.element(document).ready(()=&gt; {&#xA; //属性值的类型应为String&#xA; document.body.setAttribute('spellcheck','false');& #xA;});&#xA;  
&#xA;&#xA;

最简单的答案是添加属性 spellcheck =“false”直接到你的 body 元素(为什么不?)。

&#xA;