如何在不使用 ko.cleanNode 方法的情况下对同一元素使用 applyBindings
How to use applyBindings for same element without using ko.cleanNode method
我正在 KnockoutJS 中创建简单的应用程序,这里我需要更多输入元素以通过单击按钮进行更新。我使用了 ko.applyBindings(viewModel),但它抛出了以下错误。
Uncaught Error: You cannot apply bindings multiple times to the same element.
at applyBindingsToNodeInternal (VM88 knockout-debug.js:3287)
我找到了一个解决方案,如果我使用 ko.cleanNode(node) 它可以解决我的问题。但我不想要这个,因为我有很多输入元素。所以很明显我需要为每个按钮点击清理每个节点。任何其他通用解决方案将 applyBindings 用于同一元素,否则我需要更改核心?
applybind = function() {
viewModel = {
nValue: ko.observable(10)
}
//ko.cleanNode(document.getElementById("txt")); // Don't want this.
ko.applyBindings(viewModel);
}
ko.applyBindings({
nValue: ko.observable(100)
}); //initial load.
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<input type="text" id="txt" data-bind="value: nValue" />
<input type="button" value="update value" onclick="applybind()" />
一般来说 ko.applyBinding
方法应该只被调用一次。之后,您可以简单地更改可观察值,更改将立即反映在 UI 中。
我已经相应地更改了你的片段。
viewModel = {
nValue: ko.observable(100)
}
applybind = function() {
viewModel.nValue(10);
}
ko.applyBindings(viewModel); //initial load.
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<input type="text" id="txt" data-bind="value: nValue" />
<input type="button" value="update value" onclick="applybind()" />
我正在 KnockoutJS 中创建简单的应用程序,这里我需要更多输入元素以通过单击按钮进行更新。我使用了 ko.applyBindings(viewModel),但它抛出了以下错误。
Uncaught Error: You cannot apply bindings multiple times to the same element. at applyBindingsToNodeInternal (VM88 knockout-debug.js:3287)
我找到了一个解决方案,如果我使用 ko.cleanNode(node) 它可以解决我的问题。但我不想要这个,因为我有很多输入元素。所以很明显我需要为每个按钮点击清理每个节点。任何其他通用解决方案将 applyBindings 用于同一元素,否则我需要更改核心?
applybind = function() {
viewModel = {
nValue: ko.observable(10)
}
//ko.cleanNode(document.getElementById("txt")); // Don't want this.
ko.applyBindings(viewModel);
}
ko.applyBindings({
nValue: ko.observable(100)
}); //initial load.
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<input type="text" id="txt" data-bind="value: nValue" />
<input type="button" value="update value" onclick="applybind()" />
一般来说 ko.applyBinding
方法应该只被调用一次。之后,您可以简单地更改可观察值,更改将立即反映在 UI 中。
我已经相应地更改了你的片段。
viewModel = {
nValue: ko.observable(100)
}
applybind = function() {
viewModel.nValue(10);
}
ko.applyBindings(viewModel); //initial load.
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<input type="text" id="txt" data-bind="value: nValue" />
<input type="button" value="update value" onclick="applybind()" />