How to create a computed observable array in Knockout

后端 未结 5 1165
小蘑菇
小蘑菇 2021-01-07 16:25

I would like to know how to create a computed observable array.

In my view model, I have 2 observable arrays, and I would like to have a computed observable array

5条回答
  •  时光取名叫无心
    2021-01-07 16:34

    I'm not sure if this is the most efficient option - but it is fairly simple and works for me. The ko.computed returns an observable array as below:

    self.computedArrayValue = ko.computed(function() {
        var all = ko.observableArray([]);
        ....
        return all(); 
    });
    

    A working example of the code: Html:

    Javascript function on the view model:

    self.days = ko.computed(function() {
        var all = ko.observableArray([]);
        var month = self.selectedMonth();   //observable
        var year = self.selectedYear();     //observable
        for (var i = 1; i < 29; i++) {
            all.push(i);
        }
        if (month == "Feb" && year % 4 == 0) {
            all.push(29);
        } else if (["Jan","Mar","May","Jul","Aug","Oct","Dec"].find((p) => p == month)) {
            [29,30,31].forEach((i) => all.push(i));
        } else if (month != "Feb") {
            [29,30].forEach((i) => all.push(i));                
        }
        return all(); 
    });
    

提交回复
热议问题