可以在单个中央视图中使用通过require.js / AMD定义的不同定义的模型吗?我指的是单独定义的模型,而不是集合中的模型。
如果是,那么在define()
的回调函数的json部分中如何引用它们来定义中心视图,在其变量中,在其属性的函数中等等。只能有一个this.model
,对吗?
是否有可能从这个单一的中心视图中有条件地渲染不同模型,可能由这些不同模型的变量填充?
扩展我的问题:
可以在单个中心视图中使用通过require.js / AMD定义的不同定义的集合吗?
可以在一个集合中使用通过require.js / AMD定义的不同定义的模型吗? (仅此一项就可以实现第一个目标,只能参考这个有能力的集合。)
答案 0 :(得分:0)
可以使用通过require.js / AMD定义的不同定义的模型 单中央视野?我的意思是单独定义的模型,而不是a 集合。
如果是,它们如何在回调的json部分中引用 define()的函数,在其变量中定义该中心视图 其属性的功能等。只有一个this.model,对吧?
View
this.model
只是提供模型视图的一种方式。您还可以将任何其他选项传递给视图,例如:
var YourView = Backbone.View.exend({
initialize: function(options) {
this.foo = options.foo;
}
});
var modelA = new Backbone.Model();
var modelB = new Backbone.Model();
var yourView = new YourView({model: modelA, foo: modelB});
// yourView.model == modelA
// yourView.foo == modelB
是否可以渲染不同的模板,可能填充 来自这些不同模型的变量,有条件地,来自此内部 单一中央观点?
烨。例如,如果我们向YourView
添加渲染方法,这是一个例子:
render: function() {
if (this.model.get('bar')) {
this.$el.html(this.templateA(this.model.toJSON());
} else {
this.$el.html(this.templateB(this.foo.toJSON());
}
}
可以使用通过require.js / AMD定义的不同定义的集合 在一个中心视图? 是的,就像你传递多个模型一样。如果你使用Require,那没关系;你可以通过它传递Backbone对象/类。
可以使用通过require.js / AMD定义的不同定义的模型 单一收藏? (仅这一点就可以实现第一个目标 仅引用此功能集合。) 是的,只需将所有模型放入一个集合中,如下所示:
var modelA = new ModelClass();
var modelB = new SomeOtherModelClass();
var collection = new Backbone.Collection([modelA, modelB]);
唯一的限制是Collection
只能有一个model
属性,这意味着只要您通过Model
创建新的Collection
(例如,通过fetch
或create
)他们都属于那种模式。
(如果您使用自定义功能替换model
,即使可以解决此问题,但您不应该这样做。)