【发布时间】:2017-05-12 20:53:47
【问题描述】:
这是简化的 plunker 示例:
https://plnkr.co/edit/yU9gLsiQJkwsz81H0RBw?p=preview
有一个输入绑定到 val:
<input id="inpt" [(ngModel)]="val"/>
还有一些绑定到同一个 val 的 UI:
<h1>{{val}}</h1>
如果你输入输入,h1 会改变。
该按钮正在扮演第 3 方的角色,它通过以下方式更改输入:
document.getElementById("inpt").value="33";
点击按钮后,h1值没有变为“33”,因为模型还没有更新。
我实际使用的第 3 方是输入字段上的 jqueryui 自动完成功能。
如何强制数据绑定运行(特别是这里需要从 DOM 到模型),以便 UI 的其余部分可以对这种变化做出反应?
您将在 plunker 中看到我试图使用 ngZone 将 document.getElementById("inpt").value ="33" 包装在 ngZone.run 中,但我担心这可能只与模型有关-> DOM 方向。我还看到了更多与更新 DOM 相关的示例。
在 angularjs 中,来自 DOM 的模型更新可以通过以下方式完成: angular.element(this).triggerHandler('input');
【问题讨论】:
标签: angular data-binding