每当添加新项目时,我都会尝试向我的骨干模型添加一个新的虚拟字段,代码很简单:
window.DealModel = Backbone.Model.extend({
defaults: {
title: '',
desc: '',
location: '',
terms: '',
price_orignial: 0,
price_discounted: 0
}
});
window.DealCollection = Backbone.Collection.extend({
model: DealModel,
initialize: function (models, options) {
this.bind('add', this.addTitleShort);
},
addTitleShort: function(rdeal){
rdeal.set('title_short', _.str.prune( rdeal.get('title') , 140, '+++'));
}
});
但是,我不断得到_ Cannot use 'in' operator to search for 'id' in title_short_
,不确定问题是什么,感谢帮助。
答案 0 :(得分:0)
我认为“set
”使用对象哈希:
rdeal.set( { title_short: _.str.prune( rdeal.get('title') , 140, '+++') });
但是如果创建的模型中没有“title_short”属性,我不知道你是否可以“设置”它。你可以做到
rdeal.title_short = _.str.prune( rdeal.get('title') , 140, '+++');
此外,您可以向Model类添加一个函数,该函数将返回结果,从而无需处理模型的“change
”事件:
window.DealModel = Backbone.Model.extend({
...
title_short: function() {
return _.str.prune( this.get('title') , 140, '+++');
}
});
并使用它:myModelInstance.title_short();
希望它有所帮助。