我有一个包含大量产品列表(20,000+)的简单网页。当你点击一个产品时,它会加载(通过AJAX)一系列颜色并以内联方式显示。 HTML ...尽可能减少空的observableArray在内存中的使用率
<div data-bind="foreach: products">
<span data-bind="click: $root.loadColors($data), text: $name"></span>
<ul data-bind="foreach: colors">
<li data-bind="text:$data" />
</ul
</div>
店铺视图模型:
function shopViewModel()
{
var self = this;
self.products = ko.observableArray([]);
self.loadColors = function(product)
{
var data = GetColorsByAjax();
product.colors(data);
}
}
产品视图模型:
function productModel(data)
{
var self = this;
self.name = data.name;
self.colors = ko.observableArray([]);
}
当我有20,000的产品,它使用了大量的内存。每个产品都有一个颜色的数组,它总是为空/空,直到用户点击它,但仍使用大量内存。
理想情况下,我想删除颜色 observableArray,并在用户点击产品时以某种方式动态创建它。或者将它分成一个新的视图模型。
我想消除空的observableArrays以尽量减少内存,但无法弄清楚它是如何做到的。
你可能有兴趣在检查出CodeReview.StackExchange.com。你的问题写得很好,很清楚,但是却是开放式的:有很多方法可以解决你手边的问题(消除数组)以及潜在的问题(有太多的对象)。那里的用户可能可以帮助你们,比在SO上更好。 – Jeroen
公平点。我试图找到一个'问题'问,但找不到合适的单词。我无法减少对象的数量。我遇到的问题是绑定到一个元素,并绑定了一个DOM树。 –
而不是加载这么多的结果,你可以使用服务器端分页 – Akhlesh