Knockout:该事件不会为另一个viewModel触发

时间:2013-02-04 09:25:55

标签: html events input knockout.js

以下是jsFiddle代码。

我将6个输入文本分成两个块,分别为3 + 3。

前三个输入文本可以正常工作:即使用户输入内容,它们也会显示相同的文本。

我希望另外三个输入文本具有相同的行为,因此每个块都是独立的。不幸的是,第二个块根本不起作用。 我错过了什么?

HTML:

<div>
    <!--the first block-->
    <input type="text" data-bind="value:Name, valueUpdate:'afterkeydown'"><br>
    <input type="text" data-bind="value:Name, valueUpdate:'afterkeydown'"><br>
    <input type="text" data-bind="value:Name, valueUpdate:'afterkeydown'">
<br><br><br>
    <!--the second block-->
    <input type="text" data-bind="value:Name2, valueUpdate:'afterkeydown'"><br>
    <input type="text" data-bind="value:Name2, valueUpdate:'afterkeydown'"><br>
    <input type="text" data-bind="value:Name2, valueUpdate:'afterkeydown'">        
</div>

JS:

var value="Type here...";
var viewModel={Name:ko.observable(value)};
ko.applyBindings(viewModel);


var value2="Hello John2";
var viewModel2={Name2:ko.observable(value2)};
ko.applyBindings(viewModel2);

1 个答案:

答案 0 :(得分:1)

您正在以错误的方式构建视图模型。

您需要一个具有两个属性的viewmodel:

var value="Type here...";
var value2="Hello John2";
var viewModel = {
        Name: ko.observable(value),
        Name2: ko.observable(value2)
    };
ko.applyBindings(viewModel);

您可以在documentation中了解有关viewmodel以及如何使用它们的更多信息。

演示:http://jsfiddle.net/d9VkK/