一尘不染

如何让ng-model不立即更新?

angularjs

码:

<input type="text" ng-modal="name" />
{{name}}

当我在中输入内容时input,以下内容{{name}}将立即更改。是否可以配置它仅name在输入所有字符并保留输入后才更新?


阅读 200

收藏
2020-07-04

共1个答案

一尘不染

更新资料

正如许多人提到的那样,Angular现在使用ng-model-options指令对此提供了内置支持。在这里查看更多。

<input type="text" ng-model="name" ng-model-options="{updateOn: 'blur'}" />

下面的旧答案:

ng-model没有内置选项来更改该行为,但是您可以编写一个自定义指令来执行此操作。@Gloopy
写了这样的指令。你可以在这里看看小提琴。

该指令从inputkeydown事件中注销,这些事件在每次击键后触发更新。

<input type="text" ng-model="name" ng-model-onblur />

更新:

更新了小提琴以使用最新的稳定AngularJS(在撰写本文时为1.2.16),而不是直接在github上引用主版本。

还添加了显式优先级,以便在执行伪指令后ng-model才能确保正确更改事件侦听器。

2020-07-04