动态更新 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')
等状态
我有一个模型是集合的一部分并从 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')