私はember.js todoMVCの例をいじっています。完了し、問題なく動作しましたが、さらに学習するために、変更を開始しました。
これからモデルを更新しました:
Todos.Todo = DS.Model.extend({
title: DS.attr('string'),
isCompleted: DS.attr('boolean'),
});
これに:
Todos.Todo = DS.Model.extend({
title: DS.attr('string'),
isCompleted: DS.attr('boolean'),
date: DS.attr('date')
});
(私はember-dataも使用しています)。
日付を入力できるようにテンプレートに追加し、コントローラー アクションを次のように更新しましたcreateTodo
。
actions: {
createTodo: function(){
var title = this.get('newTitle');
var date = this.get('newDate');
if(!title.trim()){
return;
}
var todo = this.store.createRecord('todo',{
date: date,
title: title,
isCompleted: false
});
//this clears the input field value
this.set('newTitle', '');
this.set('newDate', '');
//and save the instance of the model.
todo.save();
},
//...More code
すばらしい、すべてが機能するので、 localstorage adapterlocalstorage
を使用して保存します。
ここで問題が発生し、日付が に保存されません。これは、アダプタで使用されているandメソッドがlocalstorage
原因です。toJSON
serialize
具体的には、アダプターはこれを行います。
_addRecordToNamespace: function (namespace, record) {
var data = record.serialize({includeId: true});
namespace.records[data.id] = data;
}
レコードの一部であるサブオブジェクトを取得_data
します。次のようになります。
//taken from the chrome inspector
_data: Object
__ember1386208719445_meta: Meta
date: "12/11/2013"
isCompleted: false
title: "testing something"
__proto__: Object
そして戻ります:
Object {title: "testing something", isCompleted: false, date: null}
toJSON
同じものを返します。
SO TLDR && 質問:
明らかに値があり、その値が文字列である場合、メソッドtoJSON
とserialize
my を null に設定するのはなぜですか?date