dojo 如何强制dijit/form/TextBox立即更新绑定到它的变量-绑定无法按预期工作

juud5qan  于 2022-12-16  发布在  Dojo
关注(0)|答案(1)|浏览(143)

我有一个

<input id="myTextBox" data-dojo-type="dijit/form/TextBox" data-dojo-props="value: at(model, myValue)" />

当我尝试将值从model.myValue复制到另一个input时(例如,通过

window.setInterval(
  function() { document.getElementById("theOtherInput").value = model.myValue; }, 1000);

我注意到,myTextBox的值在myTextBox<input>失去焦点之前不会与model.myValue同步,即-theOtherInput不会更新,除非我离开输入字段myTextBox
如何强制dojo在每次击键时都将输入与绑定变量同步?我认为这应该是默认行为,或者至少应该是可以实现的,但是我没有找到正确的属性来实现它。有什么想法吗?
对我来说,主要的问题是,当我通过回车键提交表单时,model.myValue仍然具有输入myTextBox获得焦点之前的值(我不想破解setInterval-我只想让Dojo完成它的工作,将输入与模型同步)。

fd3cxomn

fd3cxomn1#

最接近的方法是将intermediateChanges属性设置为true并附加一个onChange事件。

<input id="myTextBox" data-dojo-type="dijit/form/TextBox" 
       data-dojo-props="intermediateChanges: true"
       data-dojo-attach-event="onChange: _myOnChange"
       data-dojo-props="value: at(model, myValue)" />

现在,在您的小部件中,_myOnChange函数将随着每次有价值的击键或内容更改而运行。

_myOnChange: function(newValue){
  console.log(newValue);
  document.getElementById("theOtherInput").value = newValue;
}

相关问题