Data binding 如何应用具有不同文档根的绑定

Data binding 如何应用具有不同文档根的绑定,data-binding,knockout.js,document-root,Data Binding,Knockout.js,Document Root,您好,我有以下html: <div id="div1"> <input id="input1" data-bind="value: inputIn, valueUpdate: 'afterKeydown'" > // ... more stuff between </div> <div id="div2"> <input id="input2" data-bind="value: inputOut"> // .

您好,我有以下html:

<div id="div1">
   <input id="input1" data-bind="value: inputIn, valueUpdate: 'afterKeydown'" >
   // ... more stuff between
</div>

<div id="div2">
   <input id="input2" data-bind="value: inputOut">
   // .... more stuff between
</div>
应用绑定:

var myModel = new MyModel();
ko.applyBindings(model, document.getElementById("div2"));
ko.applyBindings(model, document.getElementById("div1"));

我希望输入1中的更改能够影响输入2。怎么了?是他们在不改变html的情况下解决这个问题的方法。元素位于两个不同的div中,我希望敲除绑定应用于跨根域。

您的问题不在于如何绑定它(尽管我认为不值得这么麻烦)。您的问题是
不是您认为的
计算的
属性中的内容(实际上是
窗口

试试这个:

function MyModel() {
    var self = this;
    this.inputIn = ko.observable("");
    this.inputOut = ko.computed(function () {
        return transformOutput(self.inputIn());
    });
}

这里有一个简单的

为什么要将同一个模型绑定到两个单独的元素?只需将其绑定到一个父级(甚至根级)即可。绑定到根级不会减慢速度。我有14组不同的字段集元素。(其中只有两个会被使用)不能说我曾经有过问题,我在一些非常大的页面上使用过KO。无论哪种方式,都不值得担心,除非确实存在性能问题,然后您应该对其进行分析以确定源代码。过早优化是万恶之源。或者将
作为第二个参数(在函数之后)提供给
ko.computed
,这将捕获其构造时间值并将其用作函数的上下文。
function MyModel() {
    var self = this;
    this.inputIn = ko.observable("");
    this.inputOut = ko.computed(function () {
        return transformOutput(self.inputIn());
    });
}