如何在本地存储复杂的对象(带有敲除可观察对象)?

时间:2014-07-29 02:17:04

标签: javascript knockout.js

我有一个非常简单的聊天协议,它与在客户端之间发送与站点相关的数据集成在一起:

var ThreadList = function(){
    var self = this;

    self.threads = ko.observableArray(); //Thread[]
    //more members
}

var Thread = function(){
    var self = this;

    self.messages = ko.observableArray(); //Message[]
    //more members
}

var Message = function(source){
    var self = this;

    self.header = ko.computed(function(){
        //logic
    }, self);

    self.body = ko.observable();
    //more members
}

线程是两个成员之间的简单讨论线程,每个线程在这些成员之间包含多条消息。 ThreadList对象包含多个线程。

如何在本地存储此信息?使用localStorage将需要大量额外代码来序列化每个成员及其值。

1 个答案:

答案 0 :(得分:2)

如果您担心序列化数据的代码,knockoutJS有一个函数ko.toJS(object)。这将返回序列化数据。

var serializedData = ko.toJS(ThreadList); 

这将返回序列化数据。