这是我的第一个 knockout.js 应用程序,因此我将稍微简化我的代码以说明我想要完成的工作。
我有一个视图模型设置如下:
function Product(data) {
this.productName = data.productName;
this.serialNumber = data.serialNumber;
this.version = ko.observable(data.version);
this.isSelected = ko.observable(data.IsSelected);
}
function RestoreViewModel() {
var self = this;
//Properties
self.allCustomerProducts = ko.observableArray([]);
//Computations
self.selectedProducts = ko.computed(function() {
return ko.utils.arrayFilter(self.allCustomerProducts(), function(product) { return product.isSelected() });
});
}
和一些标记设置如下:
<div id="Version1">
<div class="product1"><a href="">download link goes here.</a></div>
<div class="product2"><a href="">download link goes here.</a></div>
<div class="product3"><a href="">download link goes here.</a></div>
</div>
<div id="Version2">
<div class="product1"><a href="">download link goes here.</a></div>
<div class="product2"><a href="">download link goes here.</a></div>
<div class="product3"><a href="">download link goes here.</a></div>
</div>
设置的方式是用户拥有他们选择的产品列表,然后为每个产品选择一个版本。这可以正常工作,因此可以假设selectedProducts
计算方法正在返回具有正确数据的正确数组。
经过多次尝试,我无法弄清楚如何根据产品和版本选择显示下载?
如果用户选择产品 1 和版本 1,然后还选择产品 1 和版本 2,我需要出现这些相应的元素。
如果我的视图模型中有任何内容或者我的 HTML 标记应该不同,我愿意重新工作以使其正确。
编辑:这是一个显示设置和所需输出的插图: