Data binding 在多个事件上更新剑道MVVM数据值
默认情况下,它的数据在Data binding 在多个事件上更新剑道MVVM数据值,data-binding,kendo-mvvm,Data Binding,Kendo Mvvm,默认情况下,它的数据在更改事件上,我们可以使用数据值更新=“keyup”在keyup上更改它 但我两者都需要。我想在keyup和change上绑定数据。我尝试过,通过将两个事件添加到一起,如数据值更新=“change,keyup”,不幸的是,它不起作用 <textarea cols="20" data-bind="value:Comment" data-value-update="change, keyup" id="Comment" name="Comment" rows="2">
更改事件
上,我们可以使用数据值更新=“keyup”
在keyup上更改它
但我两者都需要。我想在keyup
和change
上绑定数据。我尝试过,通过将两个事件添加到一起,如数据值更新=“change,keyup”
,不幸的是,它不起作用
<textarea cols="20" data-bind="value:Comment" data-value-update="change, keyup" id="Comment" name="Comment" rows="2"></textarea>
任何人都知道,有没有办法在多个事件中绑定数据?希望这个dojo能够帮助您完成所需的工作: 我使用数据绑定事件集合绑定了一个keyup和change事件 这个简单的示例只是在第二个文本框中向您显示正在触发的函数,该框显示它已触发相应的函数 以下是我为此示例创建的示例(控件绑定和视图模型): 控制
<textarea cols="40" data-bind="value:Comment, events:{change: events.change, keyup: events.keyup}" id="Comment" name="Comment" rows="40"></textarea>
var vm = new kendo.data.ObservableObject({
Comment: 'I am a comment',
log: '',
events:{
keyup:function(e){
var that = this;
that.set('log', that.get('log') + '\r\nI have pressed the keyup button');
},
change:function(e){
var that = this;
that.set('log', that.get('log') + '\r\nI have triggered the change event');
}
}
});
更新
添加了更新的dojo:基于评论 希望这个dojo能帮助您找到您想要的: 我使用数据绑定事件集合绑定了一个keyup和change事件 这个简单的示例只是在第二个文本框中向您显示正在触发的函数,该框显示它已触发相应的函数 以下是我为此示例创建的示例(控件绑定和视图模型): 控制
<textarea cols="40" data-bind="value:Comment, events:{change: events.change, keyup: events.keyup}" id="Comment" name="Comment" rows="40"></textarea>
var vm = new kendo.data.ObservableObject({
Comment: 'I am a comment',
log: '',
events:{
keyup:function(e){
var that = this;
that.set('log', that.get('log') + '\r\nI have pressed the keyup button');
},
change:function(e){
var that = this;
that.set('log', that.get('log') + '\r\nI have triggered the change event');
}
}
});
更新
添加了更新的dojo:基于评论 我已经更改了您的dojo代码并创建了。为了更好地理解,我在这里添加了一个div。当您按BackSpace删除字符时,它不会立即更改div中的文本。但当您在textarea之外单击时,您将看到div文本已更改。这意味着数据值更新只发生在更改的事件中。以下是一个修改版本,它在按键后更新值。我添加了一个控制台语句,以便您可以看到窗口中发生了什么。我只是将键值添加到当前“viewmodel”值的末尾,然后设置它。OK。我明白你的意思,它会触发两个事件。但是,当我从textarea中删除一个字符时,如何更新div text呢。如果我使用这个
this.set('Comment',e.data.Comments)代码>在keyup事件函数中它不起作用。下面是另一个更新的函数,它向您展示了如何处理退格:我的问题是,为什么在有人键入时要不断更新值?为什么更改事件对您来说还不够,因为您肯定只想在某人完成键入后监视值的状态
?显然,您必须为其他特殊按键添加额外的case语句,以便忽略它们。好问题。为什么在有人键入时要不断更新值?因为如果有人在评论框(文本区域)中输入了什么,那么直接点击保存按钮(不点击外部)。在这种情况下,触发了textarea change事件并将焦点移到save按钮上,但save按钮click事件未被触发。我已更改了您的dojo代码并创建了。为了更好地理解,我在这里添加了一个div。当您按BackSpace删除字符时,它不会立即更改div中的文本。但当您在textarea之外单击时,您将看到div文本已更改。这意味着数据值更新只发生在更改的事件中。以下是一个修改版本,它在按键后更新值。我添加了一个控制台语句,以便您可以看到窗口中发生了什么。我只是将键值添加到当前“viewmodel”值的末尾,然后设置它。OK。我明白你的意思,它会触发两个事件。但是,当我从textarea中删除一个字符时,如何更新div text呢。如果我使用这个this.set('Comment',e.data.Comments)代码>在keyup事件函数中它不起作用。下面是另一个更新的函数,它向您展示了如何处理退格:我的问题是,为什么在有人键入时要不断更新值?为什么更改事件对您来说还不够,因为您肯定只想在某人完成键入后监视值的状态
?显然,您必须为其他特殊按键添加额外的case语句,以便忽略它们。好问题。为什么在有人键入时要不断更新值?因为如果有人在评论框(文本区域)中输入了什么,那么直接点击保存按钮(不点击外部)。在这种情况下,将触发textarea change事件,并将焦点移到save按钮上,但不会触发save按钮click事件。