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

标签 javascript design-patterns backbone.js backbone.js-collections

您好,我有一个主干集合和 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/

相关文章:

javascript - 如何使用 javascript 或 jquery 动态地将容器添加到选定的列表项

java - 这种设计模式有什么好处?

javascript - 主干表行 View ,只有一个事件监听器?

c++ - 不使用 RTTI 缓存不同派生类型的设计模式

javascript:用一个回调执行一堆异步方法

javascript - 它使用 Coffeescript 调用生成的 javascript

javascript - 我们如何使用 visualsearch.js 的输出?

php - 正则表达式匹配字符串中的所有 *texttexttext

javascript - R 可折叠树 : add images dynamically in tooltip

javascript - 在Jquery中从多个数组中选择唯一值