嗨我試圖使用一個計算值來創建一個可觀察數組的過濾版本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>
我的視圖模型是這樣的:
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/
中的代碼,它代表了出來說就是一個下拉與安娜和伯特在它和一個空的這是罰款。
當我取消註釋self.available而不是第二個下拉列表填充Anna時,我得到兩個空的下拉列表。幫助請告訴我我在哪裏愚蠢。
通過觀察http://www.knockmeout.net/2011/04/utility-functions-in-knockoutjs.html它似乎是我能實現我需要什麼通過使用ko.utils.arrayFilter並將下拉列表綁定到那個(http://jsfiddle.net/patrickhastings/PTLF4/),但我仍然想知道我的原始功能在哪裏。 – 2012-04-28 12:14:43