Mat*_*old 41 ko.observablearray knockout.js computed-observable
我想知道如何创建一个计算的可观察数组.
在我的视图模型中,我有2个可观察数组,我希望有一个计算的可观察数组,它只是两个数组的组合.
function ViewModel() {
var self = this;
self.listA= ko.observableArray([]);
self.listB = ko.observableArray([]);
self.masterList= //combine both list A and B
Run Code Online (Sandbox Code Playgroud)
Bri*_*n S 33
这将组合两个数组并返回组合列表.但是,它不是一个计算的可观察数组(不知道是否可能),而是一个常规的计算可观察数组.
self.masterList = ko.computed(function() {
return this.listA().concat(this.listB());
}, this);
Run Code Online (Sandbox Code Playgroud)
tne*_*tne 13
self.masterList = ko.observableArray();
ko.computed(function () {
self.masterList(self.listA().concat(self.listB()));
});
Run Code Online (Sandbox Code Playgroud)
类似于Joe Flateau的精神回答,但我喜欢认为这种方法更简单.
我知道这是一个老问题,但我想我会把答案放在那里:
var u = ko.utils.unwrapObservable;
ko.observableArray.fn.filter = function (predicate) {
var target = this;
var computed = ko.computed(function () {
return ko.utils.arrayFilter(target(), predicate);
});
var observableArray = new ko.observableArray(u(computed));
computed.subscribe(function (newValue) { observableArray(newValue); });
return observableArray;
};
Run Code Online (Sandbox Code Playgroud)
observableArray只是一个具有更多属性的可观察对象.因此,在闭包中返回数组的计算observable将被视为数组.
| 归档时间: |
|
| 查看次数: |
38975 次 |
| 最近记录: |