嗨,我正在尝试根据http://knockoutjs.com/documentation/fn.html此处的示例(在底部)使用计算值来制作可观察数组的过滤版本。
对于我拥有的 html
<select width="50px" data-bind="options: $root.resources, optionsText: 'Name'"></select>
<select width="50px" data-bind="options: $root.available, optionsText: 'Name'"></select>
我的 viewModel 看起来像这样:
var viewModel = function() {
var self = this;
self.resources = ko.observableArray([{Name: "Anna",Available: true}, {Name: "Bert", Available: false}]);
self.getFilteredResources = function (isAvailable) {
var all = self.resources(), results = [];
var resource;
for (resource in all){
if (resource.Available() === isAvailable){
results.push(resource);
}
}
return results;
};
//self.available = ko.computed(function() { self.getFilteredResources( true);}, this);
};
ko.applyBindings(new viewModel());
您还可以在此处查看代码http://jsfiddle.net/patrickhastings/eCtFY/1/
就目前而言,一个下拉菜单中有一个 Anna 和 Bert,一个空的很好。
当我取消注释声明 self.available 而不是第二个下拉列表中填充 Anna 的行时,我得到两个空下拉列表。帮助请告诉我我在哪里愚蠢。