不能将绑定多次应用于同一元素挖空



我知道这个问题以前被问过,但使用 cleanNode 并没有解决问题。

我需要显示存储在数组中的订单 ID 列表,这是我到目前为止所做的:

self.Orders = ko.observableArray([]);
for (var i = 0; i <= self.OrdersIds().length; i++) {                                  
//ko.cleanNode($("#Table"));
ko.applyBindings({ Orders: [{ orderId : self.OrdersIds()[i] }] }, document.getElementById("oTable"));
}
<table id="commentsTable">
<tbody data-bind="foreach: Orders">
<tr>
<td data-bind="text: orderIdt"></td>
</tr>
</tbody>
</table>

当你在不传递元素ID模型的情况下做ko.applyBindings会自动应用于整个文档。

你可以传递给函数applyBindings第二个参数 - 你想要应用绑定的html元素。在您的情况下:

ko.applyBindings({ Orders: this.Orders }, document.getElementById('oTable'));

这会将模型(订单(中的每个属性(递归(映射到 html 表"oTable"。之后,您可以修改您的 Orders js 模型(从数组中添加/删除项目(,所有这些都将反映在您的 html 中。

你的例子并不完全正确,因为你忽略了淘汰的主要优势(我的意思是可观察量(。当你以这种方式创建模型时,订单:[{ orderId : self.OrdersIds(([i] }- 它不再充当可观察数组,HTML 无法对模型更改做出反应。

最新更新