バックボーンのコレクションに追加されたときに、モデル属性を自動的に生成したいと考えています。いくつかの検索を行いましたが、クライアント側で生成されたタイムスタンプを正しく処理する方法に関する情報が見つからないようです。私の次の例はうまくいきます。(ただし、すべての状況でそうであるとは限りません) backbone.js でこれを行うためのより良い方法はありますか? 以下のコード のフィドルは次のとおりです。
<div id="output"></div>
//javascript
var modelMessage = Backbone.Model.extend({
levelToInt: function () {
switch (this.get('level')) {
case "error":
return 3;
break;
case "warning":
return 2;
break;
case "info":
return 1;
break;
default:
return 0;
break;
}
}
});
var collectionMessages = Backbone.Collection.extend({
model: modelMessage,
url: "#"
});
var Messages = new collectionMessages();
Messages.listenTo(Messages, "add", function (model) {
if (!model.get('addedon')) {
model.set({
addedon: new Date().getTime(),
levelcode: model.levelToInt()
});
}
$('#output').append('<div>added model:' + JSON.stringify(model.toJSON()) + '</div>');
});
Messages.add({
level: "info",
text: "Life is good."
});
setTimeout(function () {
Messages.add({
level: "warning",
text: "you have been warned..."
});
}, 1000);
setTimeout(function () {
Messages.add({
level: "error",
text: "OMG something really bad happened!",
});
}, 2000);