gpt4 book ai didi

javascript - 主干集合和多个 subview 设计问题

转载 作者:行者123 更新时间:2023-11-30 12:55:35 24 4
gpt4 key购买 nike

您好,我有一个主干集合和 subview 的设计问题。

我的问题是我有一个向下三层的 subview ,它需要我从向上三层的父 View 传递的图像集合。我不喜欢这样,因为它创建了一个源自父 View 的依赖链。

目前,我的图片集需要一个 business_id 来生成 URL/business/the-biz-id/images。我通过 subview 向下传递集合,因为我没有全局可用于呈现 subview 的 business_id。

我是否应该让 business_id 全局可用,这样 subview 就可以在不传递 business_id 的情况下实例化集合?我不确定我是否应该这样做,因为如果我忘记全局变量声明可能会导致 future 出现问题。但是,如果它可用,我可以避免通过多个 View 传递我的图像集。

如何在不进行全局声明的情况下使 business_id 可用于 subview ?建议?意见?

2013 年 10 月 27 日更新:

这是我最终使用的:

App.BusinessHelper = function (bizId) {
var bizId = bizId;
var obj = {};

obj.getBizId = function () {
return bizId;
}

App.BusinessHelper = obj;
}

我喜欢这种结构,因为 bizId 不容易更改。也就是说,我对这个对象产生了巨大的依赖性,但为了方便起见,在我的情况下这是值得的。

最佳答案

如果您不想将 business_id 设为全局(这当然是个好主意),您可以通过将其提供给您在创建它们时实例化的 View 来规避这一点。

var myView = new MyView({business_id: 10});

如果 myView 负责创建它的 subview ,那么这是可行的方法。如果您的代码架构是健全的,即,您传递给构造函数的数据始终提供上下文。所有对相同类型的 View 通用的东西都将在“类”声明中定义。任何依赖于上下文的东西都作为构造函数参数提供。这里的 business_id 显然是一段上下文。

您可能知道,business_id 将作为 options 的属性在 View 中可用。

var MyView = Backbone.View.extend({
initialize: function() {
this.subView = new SubView({
business_id: this.options.business_id,
foo: 'bar'
});
}
});

关于javascript - 主干集合和多个 subview 设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19288940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com