【发布时间】:2013-12-04 13:10:50
【问题描述】:
在 Backbone 中,有一种方法可以在同一个模型被解析后在模型上执行一个函数。
我有带有基础数据的模型,并且想要计算组合基础数据的另一个属性。
目前我在模型内部设置了一个函数来创建和添加属性,这是在通过循环遍历每个模型从服务器获取数据后执行的,但这并不理想。
var Report = Backbone.Model.extend({
generateURL: function(){
var sURL = '', sHash = '';
sHash += this.get('reportid');
sHash += 'p1' + app.venue.info.get('loginid');
sURL += 'r=' + this.get('reportid');
sURL += '&p1=' + app.venue.info.get('loginid');
_.each(this.params, function(param){
sURL += '&' + param.name + '=' + param.value;
sHash += param.name + param.value;
});
sURL += '&h=' + new jsSHA((sHash + this.collection.sKey),'TEXT').getHash('SHA-1','HEX');
this.set({"url":sURL});
}
});
var Reports = Backbone.Collection.extend({
model: Report,
sKey: '***********',
url: function(){
return '/reports/venue/'+ app.venue.info.id;
},
});
app.venue.reports.set([{id:0,reportid:3,params:null,report_name:'Report3'},{id:1,reportid:2,params:null,report_name:'Report2'}]);
app.venue.reports.each(function(report){ report.generateURL(); });
【问题讨论】: