我知道之前曾问过这个问题,但使用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>
答案 0 :(得分:0)
当您正在执行 ko.applyBindings 而没有传递元素ID模型时,会自动应用于整个文档。
您可以传递给applyBindings函数的第二个参数 - 要应用绑定的html元素。在你的情况下:
l = [2., None, 3., 1., None, 2., None, 5.]
l = [(v, i) for i, v in enumerate(l) if v is not None]
print( sorted(l, key=lambda x: x[0])[0] )
这会将模型(Orders)中的每个属性(递归)映射到html table&#39; oTable&#39;。之后,您可以修改Orders js模型(在数组中添加/删除项目),并且所有这些都将反映在您的html中。
你的例子并不完全正确,因为你忽略了淘汰的主要优势(我的意思是可观察的)。当您以这样的方式创建模型时 Orders:[{orderId:self.OrdersIds()[i]} - 它不再充当可观察数组,HTML不能对模型变化做出反应。