gpt4 book ai didi

javascript - 是否可以使用 Knockout.js 创建计算数组

转载 作者:搜寻专家 更新时间:2023-11-01 04:57:55 24 4
gpt4 key购买 nike

我有一个带有可观察数组的 knockout.js ViewModel:

function ItemsViewModel() {
this.data = ko.observableArray([
new Item(1, "One description"),
new Item(2, "Two description"),
new Item(3, "Three description"),
// ... etc
]);
}

项目看起来像这样:

function Item(id, name) {
this.id = ko.observable(id);
this.name = ko.observable(name);
};

基于我在 ViewModel 中创建的可观察数组,我想创建第二个计算数组,如下所示:

function ItemsViewModel() {
this.data = ko.observableArray([
new Item(1, "One description"),
new Item(2, "Two description"),
new Item(3, "Three description"),
// ... etc
]);

this.computedData = // here I want to create a computed array based on the values
// of this.data
}

我似乎无法在 knockout.js 文档中的任何地方找到有关如何创建此计算数组的示例。你能给我一个例子,说明如何将第一个数组转换为以下形式的计算数组:

this.computedData = [
{ dataItem: data[0].name + ' ' + data[0].id },
{ dataItem: data[1].name + ' ' + data[1].id },
// ... etc.
]

最佳答案

您可以为此使用computed observable:

self.computedData = ko.computed(function() {
return ko.utils.arrayMap(self.data(), function(item) {
return { dataItem: item.name() + ' ' + item.id() };
});
});

这是工作示例:http://jsfiddle.net/vyshniakov/3fesA/1/

阅读文档中有关计算的更多信息:http://knockoutjs.com/documentation/computedObservables.html

关于javascript - 是否可以使用 Knockout.js 创建计算数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13605837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com