首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在视图中使用任意/不同的主干模型

问在视图中使用任意/不同的主干模型
EN

Stack Overflow用户
提问于 2014-09-27 11:21:36
回答 1查看 30关注 0票数 0

是否可以在单一的中心视图中使用通过要求.js/AMD定义的不同定义模型?我指的是单独定义的模型,而不是集合中的模型。

如果是,它们是如何在定义中心视图的define()回调函数的json部分中引用的,在它的变量中,在它的属性函数中等等。只有一个this.model,对吗?

在这个单一的中心视图中,是否可以有条件地呈现不同的模板,这些模板可能由来自那些不同模型的变量填充?

延伸我的问题:

可以在一个单一的中心视图中使用不同定义的集合吗?这些集合是通过requi.js/AMD定义的。

是否可以在一个集合中使用不同定义的模型,这些模型是通过requi.js/AMD定义的?(仅此一项就可以通过仅引用此有能力的集合来实现第一个目标。)

EN

回答 1

Stack Overflow用户

发布于 2014-10-07 12:33:32

可以在一个单一的中心视图中使用不同定义的模型吗?我指的是单独定义的模型,而不是集合中的模型。

如果是,它们是如何在定义中心视图的define()的回调函数的json部分中引用的,在它的变量中,在它的属性函数中等等。只有一个this.model,对吗?

View的this.model只是为视图提供模型的一种方式。你也可以传递任何其他你想要的选项给视图,如下所示:

代码语言:javascript
复制
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方法,下面是一个示例

代码语言:javascript
复制
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,这并不重要;你可以通过它传递主干对象/类。

是否可以在一个集合中使用不同定义的模型,这些模型是通过requi.js/AMD定义的?(仅此一项就可以通过仅引用此有能力的集合来实现第一个目标。)是的,只需将所有模型放入一个集合中,如下所示:

代码语言:javascript
复制
var modelA = new ModelClass();
var modelB = new SomeOtherModelClass();
var collection = new Backbone.Collection([modelA, modelB]);

唯一的限制是一个Collection只能有一个model属性,这意味着无论何时通过Collection创建新的Model (例如,通过fetch或create),它们都将属于该模型。

(如果将model替换为自定义函数,甚至可以绕过这一点,但您不应该这样做。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26070972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档