如何防止角度版本早于1.3.0自动修剪字段?

时间:2015-05-31 12:34:42

标签: javascript angularjs

对于整个应用程序中的字段,是否有任何方法可以阻止角度版本1.3.0之前的自动修剪?我知道我可以使用ngTrim指令阻止它指定字段,但它看起来不太好将此指令添加到应用程序中的所有文本字段,是否有任何方法可以对角度模块中的所有字段执行此操作?这是代码,如果在输入的开头添加添加空格,它们将不会出现在标签中:

<div ng-app>
  <div ng-controller="TodoCtrl">
      {{field}}
    <input type="text" ng-model="field">
  </div>
</div>

此处还有我的第一个问题How prevent angular auto trim for fields?的链接,其答案适用于1.3.0或更高版本。

1 个答案:

答案 0 :(得分:1)

在1.3.x之前的Angular中,您可以尝试修饰编译函数:

app.config(function($provide) {
    $provide.decorator('inputDirective', function($delegate) {

        var directive = $delegate[0];

        directive.compile = function(orig) {
            return function(element, attrs, transclude) {
                attrs.$set('ngTrim', 'false');
                return orig.apply(null, arguments);
            };
        }(directive.compile);

        return $delegate;
    });
});

这种方法也适用于1.3.x.

演示: http://plnkr.co/edit/gvIa7omiFWwoWW9tyl4S?p=preview