2016-10-15 18 views
0

私のドメインはかなりシンプルです。私はMessageクラスとMessagesManagerクラスを持っています。localstorageにオブジェクトを格納する

Messageは、3つの属性があります。

  1. author
  2. message(ボディ)
  3. timestamp

MessagesManagerを、基本的には、メッセージの履歴を保持ちょうどインタフェースである新しいメッセージなどを追加。

私はメッセージをlocalStorageに保存して、後の時点でそれらを取り出せるようにしたいが、どうやってそれを行うのかは分からない。

class MessagesManager { 
    constructor() { 
     this.msgs = []; //retrieve from localStorage 
    } 

    add(author, message) { 
     var msg = new Message(author, message) 
     this.msgs.push(msg); 
    } 

    save() { 
     // save to localStorage 
    } 

    delete() { 
     this.msgs = []; 
    } 
} 

そして、私のMessage

class Message { 
    constructor(author, message) { 
     this.timestamp = Date.now(); 
     this.author = author; 
     this.message = message; 
    } 

    toString() { 
     var date = new Date(this.timestamp); 

     var hours = date.getHours(); 
     var minutes = date.getMinutes(); 
     var seconds = date.getSeconds(); 

     if (hours < 10) hours = "0" + hours; 
     if (minutes < 10) minutes = "0" + minutes; 
     if (seconds < 10) seconds = "0" + seconds; 

     var time = "[" + [hours, minutes, seconds].join(":") + "]"; 

     return time + " " + this.author + ": " + this.message; 
    } 
} 

localStorageに(種類のオブジェクト、など)のメッセージを格納するための素敵な/最良の方法は何ですか、また、それらを簡単に取得することができながら(すなわち。MessagesManagerコンストラクタで)?

+0

この質問には役立つかもしれません:http://stackoverflow.com/questions/2010892/storing-objects-in-html5-ローカルストレージ – camou

答えて

0

これを試してみてください:

class MessagesManager { 
    constructor() { 
     this.msgs = (localStorage.getItem("messages"))?JSON.parse(localStorage.getItem("messages")):[]; 
} 

add(author, message) { 
    var msg = new Message(author, message) 
    this.msgs.push(msg); 
} 

save() { 
    localStorage.setItem("messages", JSON.stringify(this.msgs)); 
} 

delete() { 
    this.msgs = []; 
    localStorage.removeItem("messages"); 
} 

}

ドキュメント:http://www.w3schools.com/html/html5_webstorage.asp

関連する問題