将模型的属性传递给collectionOptions

时间:2012-11-29 14:53:30

标签: javascript backbone.js backbone-relational

如何将模型的属性传递给collectionOptions?当我尝试传递这样的param0时,this被引用到window而不是MyModel实例:

var MyModel = Backbone.RelationalModel.extend({
    defaults: {
        param0: null,
    },
    relations: [
        {
            type: Backbone.HasMany,
            key: 'others',
            relatedModel: 'OtherModel',
            collectionType: 'OtherModelCollection',
            collectionOptions: {param0: this.get('param0')}
        }
    ]
});

1 个答案:

答案 0 :(得分:1)

来自fine manual

  

<强> collectionOptions

     

值:一个选项哈希或一个接受Backbone.Relational模型实例并返回一个选项哈希的函数。

所以只需使用函数而不是对象文字:

collectionOptions: function(m) {
    return {
        param0: m.get('param0')
    };
}

这种“对象或功能”模式在Backbone世界中相当常见,例如,Model#defaults的行为方式相同。