使用文字对象作为 Backbone.Model
Using a literal object as a Backbone.Model
我需要将文字对象发送到视图。下面的代码有没有更好的替代方案:
var model= (new (Backbone.Model)).set({'foo':1,'bar':3})
只是简单的
var model = new Backbone.Model({'foo':1,'bar':3})
是的,如果您只是传递一些与视图数据无关的变量,那么您不应该传递模型。我可以想到另外两种更高效的方法来将数据放入您的视图中。
在实例化时传入数据
每个视图都会将参数传递给视图构造函数并将它们传递给视图 initialize
(Backbone 对传入的参数做了更多的工作,但它们最终都在 initialize
).让我给你看一个简单的例子。
var MyView = Backbone.View.extend({
initialize: function(options) {
// All the parameter you pass into the view construct with will be
// in the initialize options
// Attach options to the view so you can access your options
// from all view properties (bound to the view)
this.options = options || {};
}
}
现在将对象字面量放入视图中:
var aView = new MyView({'foo':1,'bar':3});
aView.options.foo; // 1
aView.options.bar; // 3
实例化后使数据可用
如果你想在实例化之后合并一个对象,那么只需使用_.extend
:
_.extend(aView, {'foo':1,'bar':3});
aView.foo; // 1
aView.bar; // 3
我需要将文字对象发送到视图。下面的代码有没有更好的替代方案:
var model= (new (Backbone.Model)).set({'foo':1,'bar':3})
只是简单的
var model = new Backbone.Model({'foo':1,'bar':3})
是的,如果您只是传递一些与视图数据无关的变量,那么您不应该传递模型。我可以想到另外两种更高效的方法来将数据放入您的视图中。
在实例化时传入数据
每个视图都会将参数传递给视图构造函数并将它们传递给视图 initialize
(Backbone 对传入的参数做了更多的工作,但它们最终都在 initialize
).让我给你看一个简单的例子。
var MyView = Backbone.View.extend({
initialize: function(options) {
// All the parameter you pass into the view construct with will be
// in the initialize options
// Attach options to the view so you can access your options
// from all view properties (bound to the view)
this.options = options || {};
}
}
现在将对象字面量放入视图中:
var aView = new MyView({'foo':1,'bar':3});
aView.options.foo; // 1
aView.options.bar; // 3
实例化后使数据可用
如果你想在实例化之后合并一个对象,那么只需使用_.extend
:
_.extend(aView, {'foo':1,'bar':3});
aView.foo; // 1
aView.bar; // 3