2012-02-16 109 views
1

是否让父视图使用UI元素来装饰子视图是一个好主意,以及执行此操作的主要方法是什么?backbone.js中的父子视图困境

例如,我有一个PhotoView实例,它表示一个JPEG以及一些出现在悬停上的动作按钮。这PhotoView包裹在一个PhotoDetailsView,它添加了一个Goolge地图地图和一些其他的东西。

我想为该照片添加edit动作。问题是:如果我将它放在PhotoView上,那么edit函数回调应该简单地触发一个事件,因为它确实是PhotoDetailsView,它必须处理编辑操作。另一方面,如果我使父视图将此UI按钮添加到子视图,它也不是一个选项,因为父视图必须知道子视图的确切UI结构。无论如何,它们之间似乎存在一种令人讨厌的依赖关系,我想摆脱它们。

我该如何解决这个困境?

回答

0

如果您PhotoView元素是你PhotoDetailsView的孩子,在我看来,你应该有你的edit按钮的PhotoView的一部分,但对你的PhotoDetailsView的动作。随着你的PhotoView模板<button class="edit">Edit</button>的地方,这应该是在你的PhotoDetailsView

events: { 
    "click .edit": "editPhoto" 
}, 
editPhoto: function(event) { 
    // Something something 
} 

这样一来,所有的父视图需要了解孩子的看法是,它有edit类的东西点击。