在我的viewModel上我有一个名为'bays'的可观察数组,其中包含一个或多个'bay'对象。每个'bay'对象都包含一个名为'products'的可观察数组,它可以包含'product'对象。 随着我的标记看起来像:Knockout.js - 停止在foreach循环中渲染元素
<div data-bind="foreach: bays">
<div class="bay" data-bind="foreach: products">
<div class="product">
<!-- Product innards -->
</div>
</div>
</div>
如果产品对象从一个托架移动到另一个那么产品元素,和里面的一切,似乎被销毁,然后重新创建,如中可以看到这jfiddle:http://jsfiddle.net/mXyzs/20/
由于我的应用程序可以一次移动托架之间的数百个产品,并且不得不重新创建它们,这会导致性能问题。有没有什么方法可以让淘汰赛重新使用现有的产品html,因为支持它们的对象不会改变,而不是破坏产品元素并重新创建它们?
http://jsfiddle.net/mXyzs/16/我添加了一个恼人的警报,但你应该看到的是,对象只创建一次。 – Joe 2013-02-26 19:55:30
一个简单的方法来检查它们是否被重新创建。使用'data-bind =“text:new Date()”'。这将显示元素创建的时间。而不是使用恼人的警报。 – 2013-02-26 22:11:19
@Joe我编辑了我的问题和我的jfiddle,因为我意识到我有点不清楚。我指的是页面上的产品元素被销毁,然后在新的托架中再次创建它们,尽管支持绑定的产品对象没有更改。 – Ric 2013-02-27 12:05:02