动态更新 Backbone 模型属性

Updating Backbone Model Attributes Dynamically

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

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...).

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

我觉得我想多了,有一种非常实用的方法可以做到这一点,但我对 Backbone 还是有点缺乏经验。

谢谢。

可以设置status的初始值,在模型初始化的时候监听updatedDate或者lastUpdateAttempt的进一步变化

类似

Backbone.Model.extend({
  initialize: function(){
     this.updateStatus();
     this.on("change:updatedDate change:lastUpdateAttempt",this.updateStatus);
  },
  updateStatus: function(){
   // your logic
  }
});

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

Backbone.Model.extend({
  initialize: function(){
     this.updateStatus();
     this.on("updateStatus",this.updateStatus);
  },
  updateStatus: function(){
   // your logic
  }
});

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

等状态