Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Data binding 在多个事件上更新剑道MVVM数据值_Data Binding_Kendo Mvvm - Fatal编程技术网

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事件。