更改 AngularJS ngTrim 行为
Posted
技术标签:
【中文标题】更改 AngularJS ngTrim 行为【英文标题】:Change AngularJS ngTrim Behavior 【发布时间】:2017-12-31 17:52:00 【问题描述】:我正在使用 AngularJS 版本 1.5.6。我有一个包含大量文本区域和文本输入的大型应用程序。我今天发现了一个由 AngularJS 为文本类型输入修剪输入的默认行为引起的错误。我想将此行为从默认修剪更改为默认不修剪。
有没有一种简单的方法可以做到这一点,而不是通过我的应用程序中的数百个文本区域和文本输入。 (也许是全局的或编写我自己的指令?)
这里是描述 ng-trim (ngTrim) 的默认行为的文档页面。
https://docs.angularjs.org/api/ng/input/input%5Btext%5D
【问题讨论】:
按照文档集ng-trim="false"
这可能是使用 JQuery 获取对所有文本框的引用然后将 ng-trim 设置为 false 的一个很好的用例。我通常不提倡将 Jquery 代码与 Angular 应用程序混合使用,但这似乎是一件非常简单的事情。
@charlietfl 是的,我明白了,但我不想为数百个不同的元素这样做。
@MikeFeltman 我认为这可能是我的最佳选择,因为我的项目具有 JQuery 依赖项。谢谢。
【参考方案1】:
以下指令应适用于所有输入类型=文本字段。默认情况下,它将为每个输入字段设置 ngTrim false 的值。如果需要,可以为 textarea 创建一个类似的。
.directive('input', function($compile)
return
link(scope, element, attrs)
if (element.attr('type') === 'text')
attrs.$set('ngTrim', 'false');
;
);
【讨论】:
@SKPall 你会在哪里指定它? 可以在添加控制器的同一个模块中添加,也可以在新模块中添加。 对不起。我知道如何将它绑定到一个模块中。具体来说,您将在哪里调用输入指令,或者您是否暗示一旦加载,它将是全局的并自动影响所有输入? 由于指令名称本身就是“输入”,它适用于每个“输入”元素。所以对于所有:,这将被自动调用。 谢谢。这太妙了。我不知道你能做到。以上是关于更改 AngularJS ngTrim 行为的主要内容,如果未能解决你的问题,请参考以下文章