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());