骨干模型字段

时间:2012-02-01 00:28:34

标签: javascript backbone.js

每当添加新项目时,我都会尝试向我的骨干模型添加一个新的虚拟字段,代码很简单:

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_,不确定问题是什么,感谢帮助。

1 个答案:

答案 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();

希望它有所帮助。