我将分离与您的对象关联的数据,以便它们不是直接属性,然后为该数据对象添加 getter/setter。
var myObject = {
var data = { .... the data ... };
var get = function() { return this.data; }
var set = function(value) { this.data = value; }
};
然后,您可以像这样创建 Backbone 模型。
var x = new myObject();
var model = new Backbone.Model(x.get());
// ... work with model
x.set(model.attributes);
或者,您可以将 Backbone 模型与相同的数据引用链接。
var x = new myObject();
var model = new Backbone.Model();
model.attributes = x.data;
抱歉,如果上面的 Javascript 不正确,但您应该能够理解。
编辑:
您可以包含myObject
对模型的第二个参数的引用,但您必须创建自己的模型类。(基于最新的 Backbone 版本)。
var myModel = Backbone.Model.extend({
/**
* @type {myObject}
*/
obj: undefined,
initialize: function(attributes, options) {
this.obj = options.obj;
}
});
var x = new myObject();
var model = new myModel(x.get(),{obj:x});
// now you can use Backbone model normally
model.set('field',123);
// call your own functions
model.obj.foo();