使用UI元素使父视图装饰子视图是一个好主意,这样做的主要方法是什么?
例如,我有一个代表JPEG的PhotoView
实例以及悬停时出现的一些操作按钮。此PhotoView
包含在PhotoDetailsView
中,其中添加了Goolge地图和其他一些内容。
我想在照片中添加edit
动作。问题是:如果我将它放在PhotoView
上,那么edit
函数回调应该只触发一个事件,因为它实际上是PhotoDetailsView
,它必须处理编辑操作。另一方面,如果我让父视图将此UI按钮添加到子视图,它也不是一个选项,因为父视图必须知道子视图的确切UI结构。无论如何,他们之间似乎存在一种令人讨厌的依赖关系,我想摆脱它。
我如何解决这个难题?
答案 0 :(得分:0)
如果您的PhotoView
元素是PhotoDetailsView
的孩子,我觉得您应该将edit
按钮作为PhotoView
的一部分,但是对PhotoDetailsView
的行动。在<button class="edit">Edit</button>
模板的某个位置使用PhotoView
,这应位于PhotoDetailsView
:
events: {
"click .edit": "editPhoto"
},
editPhoto: function(event) {
// Something something
}
这样,您的所有父视图都需要了解子视图,因为它可以点击类edit
。