2012-09-24 45 views
0

我有多個需要導航菜單的UI組件。我正在嘗試創建一個其他viewModel可以使用的MenuItem viewModel。嵌套查看模型中的Knockout事件處理程序

這個想法類似於Knockout Webmail Example

例如,「Window」viewModel可以有一個「MenuItems」數組。一個MenuItem包含所有的行爲功能(懸停&活動狀態)。

雖然懸停&活動狀態在我的使用情況非常標準的,每個菜單項需要單獨觸發一個單擊處理。

這將是理想的,如果我能在菜單項視圖模型中附上事件的回調,這樣父的ViewModels可以處理每個菜單項的Click事件。

我可以在父viewModel,中定義點擊處理程序,但是如何在foreach模板綁定中引用每個MenuItem的點擊處理程序?

我仍然在嘗試和jsFiddle創建了一個例子。由於數據綁定太冗長,我現在對標記實在不太滿意。

預先感謝您。

回答

3

嘗試使用ko.contextFor(this)

看一看Ko unobtrusive event handlers

+0

是的,我知道不顯眼的事件處理程序。但是,不會讓jQuery成爲依賴嗎?無法處理KO viewModel中的事件? –

+0

那麼你可以寫一個自定義綁定。在[文章](http://www.knockmeout.net/2011/04/event-delegation-in-knockoutjs.html)中,您可以瞭解如何執行此操作。他們正在使用Jquery模板來訪問用戶點擊的實際對象,但是您可以使用ko.context來訪問它。對於 – estebane97

+0

顯然,您比我更瞭解我的最後一條評論。感謝您的文章鏈接:-) –