这是一个非常冗长的陈述。
我正在构建一个在.Net中实现WebAPI并在前端使用Knockout的分面搜索。我的搜索响应包括两个对象列表,资源(具有用于呈现的数据的对象)和资源构面(字符串数组)。
\"ResourceFacets\": [\r\n \"Book\",\r\n \"Video\",\r\n \"DVD\",\r\n \"eBook\",\r\n \"Audio\"\r\n ]\r\n}"
我的ViewModel包含构面和资源以及用于处理自定义行数的表示对象:
function ViewModel() {
this.facets = ko.observableArray(results.ResourceFacets);
this.resources = ko.observableArray(results.ResourceResults);
this.resourceRows = ko.computed(function() {
var rows = [],
rowIndex = 0,
itemsPerRow = 2;
var resourceList = this.resources();
for (var index = 0; index < resourceList.length; index++) {
if (!rows[rowIndex]) {
rows[rowIndex] = [];
}
rows[rowIndex].push(resourceList[index]);
if (rows[rowIndex].length == itemsPerRow) {
rowIndex++;
}
}
return rows;
});
};
这允许我创建一个动态的复选框列表来处理构面并显示资源结果。我现在要做的是添加一个Select All复选框,默认情况下会选中所有框。从我见过的其他例子来看,我的理解是我需要一个可观察的属性,例如&#34; Selected&#34;,在ResourceFacet上。我觉得API需要了解我的演示文稿太多了。
所以我的问题是如何避免添加&#34;选择&#34; bool值为ResourceFacets但仍然可以选择所有复选框或取消选择&#34; All&#34;用户取消选择方面时的复选框?
答案 0 :(得分:0)
除了facets
和resources
之外,您还可以保留跟踪视图模型的单独成员选择所需的布尔值列表。只需创建一个与facets
大小相同的布尔值的新observableArray,并将这些值绑定到复选框。
另一个解决方案是根据results.ResourceFacets
创建动态绑定复选框所需的对象,保持API清洁。例如:
var realModel = [];
for (var i = 0; i < results.ResourceFacets; i++) {
realModel.push({ name: results.ResourceFacets[i], chkBoxVal: ko.observable(false) });
}
this.facets = ko.observableArray(realModel);