Knockout.js 更新ObservalArray knockoutjs中的可观察值

Knockout.js 更新ObservalArray knockoutjs中的可观察值,knockout.js,Knockout.js,我有一个可观察的耳环和一个可观察的耳环,如下所示 self.unreadcount = ko.observable(); self.searchFilters = ko.observableArray([ {label: "A", active: ko.observable(false), count1: self.unreadcount()}, {label: "B", active: ko.observable(false), count1: self.unreadcoun

我有一个可观察的耳环和一个可观察的耳环,如下所示

self.unreadcount = ko.observable();

self.searchFilters = ko.observableArray([
    {label: "A", active: ko.observable(false), count1: self.unreadcount()},
    {label: "B", active: ko.observable(false), count1: self.unreadcount()},
    {label: "C", active: ko.observable(false), count1: self.unreadcount()}
]);
在一个特定函数中,我向self.unreadcount()传递了一些值,
我也需要相应地更新我的ObservalArray。我该怎么做

您可以使用
self.unreadcount
observable设置
count1
属性

self.searchFilters = ko.observableArray([
    {label: "A", active: ko.observable(false), count1: self.unreadcount},
    {label: "B", active: ko.observable(false), count1: self.unreadcount},
    {label: "C", active: ko.observable(false), count1: self.unreadcount}
]);

或者可以将
count1
属性绑定到
$parent.unreadcount

<div data-bind="foreach : searchFilters">
    <span data-bind="text : label"></span> 
    <span data-bind="text : $parent.unreadcount"></span>
    <br/>
</div>

如果您需要手动更新
count1
;你可以这样做:

self.searchFilters = ko.observableArray([
    {label: "A", active: ko.observable(false), count1: ko.observable(self.unreadcount())},
    {label: "B", active: ko.observable(false), count1: ko.observable(self.unreadcount())},
    {label: "C", active: ko.observable(false), count1: ko.observable(self.unreadcount())}
]);

self.update = function(newValue) {
    ko.utils.arrayForEach( self.searchFilters(), function(row) {
        row.count1(newValue);
    });
}

我不确定这是否是您想要的,但我创建了一个JSFIDLE:,它使用您的
observableArray
并允许您更新每行的计数

标记:

<p data-bind="text: ko.toJSON(searchFilters)"></p>
<div class="liveExample" data-bind="foreach: searchFilters"> 
   <p>Label:<input data-bind="value: label"></input></p>
   <p>Active:<input type="checkbox" data-bind="checked: active"></input></p>
   <p>Unread:<input data-bind="value: count1"></input></p>
   <input type="button" data-bind="click: changeValue(count1)" value="click me"/>
   <hr/>
</div>
<p data-bind="text: ko.toJSON(searchFilters)"></p>
<div class="liveExample" data-bind="foreach: searchFilters"> 
   <p>Label:<input data-bind="value: label"></input></p>
   <p>Active:<input type="checkbox" data-bind="checked: active"></input></p>
   <p>Unread:<input data-bind="value: count1"></input></p>
   <input type="button" data-bind="click: changeValue(count1)" value="click me"/>
   <hr/>
</div>
var ViewModel = function () {
    self.unreadcount = ko.observable(0);

    self.searchFilters = ko.observableArray([{
        label: "A",
        active: ko.observable(false),
        count1: ko.observable(self.unreadcount())
    }, {
        label: "B",
        active: ko.observable(true),
        count1: ko.observable(self.unreadcount())
    }, {
        label: "C",
        active: ko.observable(false),
        count1: ko.observable(self.unreadcount())
    }]);

    self.changeValue = function(item){
       item(item() + 1); 
    };
};

ko.applyBindings(new ViewModel());