我目前有一个测试,其中我有一个value.bind="someProperty"
的输入元素,它可以正常工作,并在输入字段中正确显示该属性的值。
但是,如果我要在该字段上订阅DOM input
事件,并且在调用它时检查属性的值,它与DOM值不同,即使我要延迟100毫秒(通过setTimeout(checkPropertyValue, 100);
)值并不总是传播到模型,所以当值从输入字段中更新时是什么时候?
==编辑==
以下是正在发生的事情的示例代码,在与某人通过对话时提出了一个好点,使用视图过滤器可能会限制value
绑定,因此您不能依赖于直接更新的模型因此您可能需要使用ObserverLocator
倾听模型更改。
@customAttribute('some-atribute')
export class SomeAttribute
{
@bindable someObjectWhichUsesVM;
constructor(element) {
this.element = element;
}
attached() {
this.element.addEventListener("input", doSomethingWithModel);
}
doSomethingWithModel() {
this.someObjectWhichUsesVM.doSomething();
}
}
因此,上面的代码将检查元素的输入更改(而不是模型绑定),然后尝试使用模型上的数据执行某些操作,这些数据不会传播。
我想我已经找到了答案,即我需要订阅模型以进行更改,并且基本上确保在运行逻辑之前已经发生了更改,但是如果有更好的方法,那我就全都听了。 / p>