【发布时间】:2011-06-15 05:51:46
【问题描述】:
使用backbone.js:
我有一个顶层 ModelA,它包含 2 个属性和 2 个嵌套模型,ModelB 和 ModelC。 ModelB 和 ModelC 各有 2 个属性,如下:
ModelA
attributeA1
attributeA2
ModelB
attributeB1
attributeB2
ModelC
attributeC1
attributeC2
ModelA 有一个 ViewA,ModelB 有一个 ViewB。 ViewA 的渲染函数将一个新的 div 放到 body 上,而 ViewB 的渲染创建一个 h1。 ViewA 的初始化调用 ViewB 的渲染将 h1 插入到新的 div 中。这种分离背后的基本原理是 h1 可能会发生变化并需要独立于 ViewA 重新渲染。
ViewA
initialise:
//call ViewA's own render function
this.render()
//call ViewB's render function that further modifies the $("#new") div created earlier.
$("#new").append(ViewB.render().el)
//ViewA's own render function
render: //place <div id="new"></div> onto 'body'
ViewB
render: //create a <h1></h1>
funcB1: //can this access it's parent ModelA's attributes and other objects?
Q1:ViewB 有一个函数 funcB1。这个函数可以访问它的父模型的属性吗?诸如attributeA1之类的属性,甚至attributeC1(可能是兄弟/表亲)?
Q2:作为 Q1 的进一步扩展,funcB1 可以访问与 ViewA 关联的 DOM 元素吗? (在这个例子中,#new div?)
Q3:一般情况下,我如何定义上述视图和模型之间的关联,以便将所有内容正确关联在一起?
我意识到这个问题有些抽象,但任何人都感谢任何帮助或指导。
【问题讨论】:
-
您是否尝试过编写测试以查看这些测试是否能回答您的问题?
-
我尝试使用 Q1 和 Q2 的一些代码,但无法让它们工作。我认为提出这个问题的最好方法就是使用伪代码,并让更多精通 js 的人为我指明正确的方向。
-
我建议你用失败的代码写单独的问题,以便 js 程序员可以指出哪里出了问题。
-
当然,这很公平,我会尝试写一些。无论如何,如果有人仍然想提供任何意见,仍然欢迎!
-
这是一个相关(虽然更通用)的问题和长答案,以进一步了解这一点:stackoverflow.com/questions/10077185/…