こんにちは、ここの例に従って、計算された値を使用して、監視可能な配列のフィルター処理されたバージョンを作成しようとしています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/
目立つように、出力は、アンナとバートが入ったドロップダウン 1 つと空の 1 つですが、これは問題ありません。
2 番目のドロップダウンに Anna が入力されるのではなく、self.available を宣言する行のコメントを外すと、空のドロップダウンが 2 つ表示されます。助けてください、私がばかげているところを教えてください。