繁体   English   中英

淘汰赛添加计算的中断可观察数组

[英]Knockout adding computed breaks observable array

嗨,我正在尝试使用计算值来制作可观察到的数组的过滤版本,如此处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填充第二个下拉列表时,我得到两个空的下拉列表。 帮助请告诉我我在哪里傻。

这个问题有两个小问题:

您正在调用resource.Available()Available并不是可观察的,因此您只需要检查resource.Available === isAvailable

此外,您计算出的可观察值需要return self.getFilteredResources的结果

for resource in all将为您提供索引,而不是资源本身。

我会推荐类似的东西: http : //jsfiddle.net/rniemeyer/jCYT7/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM