2012-02-16 107 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類的東西點擊。