试图转换/映射我的JSON数组中的对象到我的KO可观察函数

trying to convert/map the Objects in my JSON array to my KO observable function

本文关键字:我的 对象 KO 函数 观察 数组 转换 映射 JSON      更新时间:2023-09-26

我读取了一个JSON数组,现在我想让数组中的每个对象都是KO可观察对象这样它就可以映射到函数

function Person(data)
{
    this.name = ko.observable(data.name);
    this.age = ko.observable(data.age);
    this.link = ko.observable(data.link);  
}
function ViewModel()
{
    var self = this;    
    self.Persons = ko.observableArray([]);
    var JSONdataFromServer;
    $.getJSON('http://127.0.0.1:8080', function(data) {
        self.Persons(data);
        for(var k in self.Persons) {
            k = $.map(k, function(item) { return new Person(item) });
        }
    });
}

然而,当我运行这段代码(这只是它的一部分)时,我得到错误"不能使用'in'操作符在G中搜索'0'"。同样,我要做的是将Persons数组中的JSON对象转换为Person KO可观察对象。

self.Persons是一个observableArray,所以如果你想查看它的内容,你需要调用它:

for (var k in self.Persons())

你做的其他事情让我很困惑。要将JSON对象转换为Person s的可观察对象,您可能会做这样的事情(取决于数据看起来像什么—您不说):

$.getJSON('http://127.0.0.1:8080', function(data) {
    var arrayOfPersons = ko.utils.arrayMap(data, function (item) {
        return new Person(item);
    });
    self.Persons(arrayOfPersons);
});

避免手动映射来自服务器的传入数据。使用ko映射插件。当您的viewModel开始增长时,维护您的客户端viewModel与来自服务器的数据同步是非常困难的,最好利用它来进行映射,如果您需要更多地控制映射应该如何工作,这也是非常灵活的。