Knockout.js 关于敲除js和值更改的数据绑定

Knockout.js 关于敲除js和值更改的数据绑定,knockout.js,Knockout.js,在这里,两个文本框和一个跨度通过敲除绑定。我得到的例子很容易理解。这是代码 <p>First name: <input data-bind="value: firstName" /></p> <p>Last name: <input data-bind="value: lastName" /></p> <h2>Hello, <span data-bind="text: fullName"> </

在这里,两个文本框和一个跨度通过敲除绑定。我得到的例子很容易理解。这是代码

<p>First name: <input data-bind="value: firstName" /></p>
<p>Last name: <input data-bind="value: lastName" /></p>
<h2>Hello, <span data-bind="text: fullName"> </span>!</h2>

var ViewModel = function(first, last) {
    this.firstName = ko.observable(first);
    this.lastName = ko.observable(last);

    this.fullName = ko.computed(function() {
        // Knockout tracks dependencies automatically. It knows that fullName depends on firstName and lastName, because these get called when evaluating fullName.
        return this.firstName() + " " + this.lastName();
    }, this);
};

ko.applyBindings(new ViewModel("Planet", "Earth")); 
名字:

姓氏:

你好 var ViewModel=函数(第一个,最后一个){ this.firstName=ko.observable(first); this.lastName=ko.observable(last); this.fullName=ko.computed(函数(){ //Knockout自动跟踪依赖项。它知道fullName依赖于firstName和lastName,因为在计算fullName时会调用它们。 返回此.firstName()+“”+此.lastName(); },这个); }; ko.应用绑定(新视图模型(“行星”、“地球”);

当代码运行时,无论传递什么值,都会反映出来,但当我更改一个文本框值时,更改的数据不会在
keyup
发生时立即反映出来,但当焦点更改时,更改的数据会反映在span中。所以,如果我想更改keyup上的数据,那么请指导我需要在代码中更改什么。谢谢

您应该使用
valueUpdate
绑定:

<p>First name: <input data-bind="value: firstName, valueUpdate: 'keyup'" /></p>
<p>Last name: <input data-bind="value: lastName, valueUpdate: 'keyup'" /></p>
<h2>Hello, <span data-bind="text: fullName"> </span>!</h2>
名字:

姓氏:

你好

这里有一个文档链接:

您可以在数据绑定中传递附加值
valueUpdate

  • 价值更新
如果绑定还包括一个名为valueUpdate的参数,则 定义KO应用于检测更改的其他浏览器事件 除了变化事件。以下字符串值是最重要的 常用的选择:

  • “keyup”-在用户释放密钥时更新视图模型
  • “按键”-当用户键入键时更新视图模型。 与keyup不同的是,它会在用户按住键时重复更新
  • “afterkeydown”-用户一开始就更新视图模型 键入字符。这是通过捕捉浏览器的keydown事件来实现的 以及异步处理事件
在这些选择中, 如果要保留视图模型,“afterkeydown”是最佳选择 实时更新

因此,您的绑定将是:

<p>First name: <input data-bind="value: firstName, valueUpdate: 'keyup'" /></p>
<p>Last name: <input data-bind="value: lastName, valueUpdate: 'keyup'" /></p>
名字:

姓氏: