关于Backbone.js:动态更新Backbone 模型属性

Updating Backbone Model Attributes Dynamically

我有一个模型是集合的一部分,并从api检索数据。该模型(除其他属性外)包含以下属性:

1
2
3
updatedDate //-> value retreived from API/DB
lastUpdateAttempt //-> value retrieved from API/DB
status //-> value NOT retrieved from API/DB, depends on values of above two attributes ("updated","error","out of date", etc...).

我的问题是,如何/何时设置状态属性?有没有一种方法可以在尝试检索值时动态设置状态? (即modelObj.get(" status")->调用函数以计算值,并返回结果)。还是应该从视图中调用函数以在初始化时更新此属性,然后添加一个事件侦听器,该事件侦听器在更改时执行相同的操作? (<-似乎不是最佳解决方案)

我觉得自己想得太多了,并且有一种非常实用的方法来执行此操作,但是我对Backbone仍然缺乏经验。

谢谢。


您可以设置状态的初始值,并在初始化模型时侦听对updatedDatelastUpdateAttempt的进一步更改。

类似

的东西

1
2
3
4
5
6
7
8
9
Backbone.Model.extend({
  initialize: function(){
     this.updateStatus();
     this.on("change:updatedDate change:lastUpdateAttempt",this.updateStatus);
  },
  updateStatus: function(){
   // your logic
  }
});

或者您可以尝试这种奇怪的方式(完全没有经过测试,只是一个想法),有点像在访问状态时更新状态。如果您想控制状态更新的频率,可能会有所帮助。 (如果您访问状态的方式少于其他两个属性可能发生的更改次数)

1
2
3
4
5
6
7
8
9
Backbone.Model.extend({
  initialize: function(){
     this.updateStatus();
     this.on("updateStatus",this.updateStatus);
  },
  updateStatus: function(){
   // your logic
  }
});

并访问model.trigger('updateStatus').get('status')

之类的状态