Javascript 将ko.toJSON转换回可观察数组

Javascript 将ko.toJSON转换回可观察数组,javascript,knockout.js,Javascript,Knockout.js,我有以下可观察阵列: self.users = ko.observableArray(); 其中包含以下对象的项目: function user(id, name, score) { this.id = id; this.name = name; this.score = ko.observable(score); } 我需要将这个可观察数组本地存储在用户的计算机中(简化的示例),所以我使用localstorage和ko.toJSON函数来实现这一点。这很好,所有数据

我有以下可观察阵列:

self.users = ko.observableArray();
其中包含以下对象的项目:

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

我需要将这个可观察数组本地存储在用户的计算机中(简化的示例),所以我使用localstorage和
ko.toJSON
函数来实现这一点。这很好,所有数据都存储在localstorage中,包括
score
项,它本身就是一个可观察项。问题是我无法将这个字符串转换回可观察数组。当我执行
JSON.parse
并将其传递给
self.users
score
时,就再也看不到了。是否有类似于
ko.parse
的函数来还原
ko.toJSON

这实际上非常简单。但是,您最初构建的
self.users
集合与使用JSON数据构建它的方式相同。这是一个例子:

function User(data) {
    this.id = data.id;
    this.name = data.name;
    this.score = ko.observable(data.score);
}

...
//inside viewmodel
var storage;
self.store = function() {
    storage = ko.toJSON(self.users());
    self.users.removeAll();
};
self.load = function() {
    var parsedUsers = JSON.parse(storage);
    self.users(ko.utils.arrayMap(parsedUsers, function(u) {
        return new User(u);
    }));
};
下面是使用此方法的示例。

可能会有所帮助。