Javascript 在collection Add()Backbone.js上添加时间戳和排序顺序字段

Javascript 在collection Add()Backbone.js上添加时间戳和排序顺序字段,javascript,backbone.js,Javascript,Backbone.js,我想在添加到主干中的集合时自动生成模型属性。我做了一些搜索,但似乎找不到关于如何正确处理客户端生成的时间戳的任何信息。我下面的例子有效。(但可能不是在所有情况下)是否有更好的方法使用backbone.js实现这一点? 下面是代码的详细信息 //javascript var modelMessage=Backbone.Model.extend({ levelToInt:函数(){ 开关(this.get('level')){ 案例“错误”: 返回3; 打破 案例“警告”: 返回2; 打破 案例

我想在添加到主干中的集合时自动生成模型属性。我做了一些搜索,但似乎找不到关于如何正确处理客户端生成的时间戳的任何信息。我下面的例子有效。(但可能不是在所有情况下)是否有更好的方法使用backbone.js实现这一点? 下面是代码的详细信息


//javascript
var modelMessage=Backbone.Model.extend({
levelToInt:函数(){
开关(this.get('level')){
案例“错误”:
返回3;
打破
案例“警告”:
返回2;
打破
案例“信息”:
返回1;
打破
违约:
返回0;
打破
}
}
});
var collectionMessages=Backbone.Collection.extend({
型号:modelMessage,
网址:“#”
});
var Messages=new collectionMessages();
Messages.listenTo(消息,“添加”,函数(模型){
如果(!model.get('addedon')){
模型集({
addedon:new Date().getTime(),
levelcode:model.levelToInt()
});
}
$('#output').append('添加的模型:'+JSON.stringify(model.toJSON())+'');
});
Messages.add({
级别:“信息”,
课文:“生活是美好的。”
});
setTimeout(函数(){
Messages.add({
级别:“警告”,
文字:“您已被警告……”
});
}, 1000);
setTimeout(函数(){
Messages.add({
级别:“错误”,
文字:“天哪,发生了非常糟糕的事情!”,
});
}, 2000);

我只需要设置模型,以便无论何时创建它,您都给它一个时间戳。因此,我将在您的模型中添加以下内容:

var modelMessage = Backbone.Model.extend({
  defaults: function() {
    return {
      addedon: new Date().getTime()
    };
  },
  // ... the rest of your code
});
然后更改
消息。同时将listenTo
调用更改为以下内容:

Messages.listenTo(Messages, "add", function (model) {
  model.set({levelcode: model.levelToInt()});
  $('#output').append('<div>added model:' + JSON.stringify(model.toJSON()) + '</div>');
});
然后在
消息中省略
model.set
。listenTo

Messages.listenTo(Messages, "add", function (model) {
  $('#output').append('<div>added model:' + JSON.stringify(model.toJSON()) + '</div>');
});
Messages.listenTo(消息,“添加”,函数(模型){
$('#output').append('添加的模型:'+JSON.stringify(model.toJSON())+'');
});

我只需要设置模型,以便无论何时创建它,您都给它一个时间戳。因此,我将在您的模型中添加以下内容:

var modelMessage = Backbone.Model.extend({
  defaults: function() {
    return {
      addedon: new Date().getTime()
    };
  },
  // ... the rest of your code
});
然后更改
消息。同时将listenTo
调用更改为以下内容:

Messages.listenTo(Messages, "add", function (model) {
  model.set({levelcode: model.levelToInt()});
  $('#output').append('<div>added model:' + JSON.stringify(model.toJSON()) + '</div>');
});
然后在
消息中省略
model.set
。listenTo

Messages.listenTo(Messages, "add", function (model) {
  $('#output').append('<div>added model:' + JSON.stringify(model.toJSON()) + '</div>');
});
Messages.listenTo(消息,“添加”,函数(模型){
$('#output').append('添加的模型:'+JSON.stringify(model.toJSON())+'');
});

似乎是向我添加模型属性的合理方法。为什么要将其添加到集合中,而不仅仅是在
模型中。尽管如此,还是要初始化
?你是否有一个你关心的具体情况?客户端的时间戳与服务器端的时间戳有什么不同呢?我实际上想知道是否应该将逻辑放在模型中。我对主干非常陌生,所以我唯一关心的情况是我还不知道的情况。我会将代码移到模型上的init方法@fbynite有一个当前的解决方案来解决这个问题。似乎是一个向我添加模型属性的合理方法。为什么要将其添加到集合中,而不仅仅是在
模型中。尽管如此,还是要初始化
?你是否有一个你关心的具体情况?客户端的时间戳与服务器端的时间戳有什么不同呢?我实际上想知道是否应该将逻辑放在模型中。我对主干非常陌生,所以我唯一关心的情况是我还不知道的情况。我会将代码移到模型上的init方法@fbynite有一个最新的解决方案。谢谢fbynite。这就是我要找的。谢谢你。这就是我要找的。