backbone.js中的亲子视图困境

时间:2012-02-16 10:17:23

标签: javascript backbone.js

使用UI元素使父视图装饰子视图是一个好主意,这样做的主要方法是什么?

例如,我有一个代表JPEG的PhotoView实例以及悬停时出现的一些操作按钮。此PhotoView包含在PhotoDetailsView中,其中添加了Goolge地图和其他一些内容。

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

我如何解决这个难题?

1 个答案:

答案 0 :(得分:0)

如果您的PhotoView元素是PhotoDetailsView的孩子,我觉得您应该将edit按钮作为PhotoView的一部分,但是对PhotoDetailsView的行动。在<button class="edit">Edit</button>模板的某个位置使用PhotoView,这应位于PhotoDetailsView

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

这样,您的所有父视图都需要了解子视图,因为它可以点击类edit