这就是我目前处理传递到我的集合模型的数据的方式。但我不确定这是否是最佳/正确的方式。
MyCollection的:
define([ 'underscore', 'backbone','models/mymodel'], function(_, Backbone, myModel){
var MyCollection = Backbone.Collection.extend({
model: function (attr, options){
options.data = {data: options.collection.options.some_data};
return new myModel(attr, options);
},
initialize: function(options) {
this.options = options;
}
});
return MyCollection;
});
为MyModel:
define([ 'underscore', 'backbone' ], function(_, Backbone){
var MyModel = Backbone.Model.extend({
defaults: {
},
initialize: function(attr, options) {
` console.log(options.data)
}
});
return MyModel;
});
这是初始化集合模型时传递数据的唯一方法吗?
答案 0 :(得分:1)
不,请在MyCollection中尝试:
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set objPrinter = objWMIService.Get("Win32_Printer").SpawnInstance_
For i = 1 to 40
name = "Testprinter" & i
objPrinter.DeviceID = name
objPrinter.Caption = name
objPrinter.DriverName = "Microsoft XPS Document Writer"
objPrinter.PortName = "XPSPort:"
objPrinter.Put_
Next
如果您创建一个新的myModel,请执行以下操作:
model: myModel,
答案 1 :(得分:1)
您可以覆盖集合如何将属性散列转换为模型。它是通过Collection._prepareModel
完成的,您可以更改传递给此方法的选项:
var MyCollection = Backbone.Collection.extend({
model: MyModel,
_prepareModel: function(attrs, options) {
options = _.extend({}, options, {
data: this.options.some_data
});
return Backbone.Collection.prototype._prepareModel.call(this, attrs, options);
},
initialize: function(models, options) {
// note that the options hash is the second argument
this.options = options;
}
});