2014-01-31 44 views
0

我有組成導航菜單的鏈接列表。我正在嘗試將一個tap事件綁定到一個標籤。敲除 - 使用附加參數綁定事件

這是HTML

<a data-bind="event: { tap: $parent.menuClick.bind($index, $data.menuText, $data.menuValue) }"> 

這是JavaScript

this.menuClick = function (menuIndex, menuText, menuValue) { 
    .... 
} 

這沒有奏效。當我在menuClick函數內部放置一個斷點時,我發現參數值完全混亂了。

menuInde​​x param有菜單項的文本。
menuText參數具有菜單項的值
menuValue param有敲除「$ data」對象。

有人可以告訴我如何正確傳遞參數。

謝謝。

回答

0

的第一個參數是bind被用作在被調用的函數(MDNthis的值。所以,你可能會希望結合是這樣的:

event: { tap: $parent.menuClick.bind($parent.menuClick, $index, $data.menuText, $data.menuValue) } 

或者,你可能會感興趣的Knockout.Punches plugin,讓您提供針對事件運行的表達式:

on.tap: $parent.menuClick($index, $data.menuText, $data.menuValue) 
0

bind()函數的第一個參數是this。因此menuText最終顯示爲menuIndex參數等。在其他地方傳入其他東西(例如,視圖模型)。

<a data-bind="event: { 
    tap: $parent.menuClick.bind($root, $index, $data.menuText, $data.menuValue) 
}">...</a> 
+0

「它贏得無論如何「這是不正確的。在'bind'調用中指定的值始終優先,在使用'call'或'apply'時不會被覆蓋(如Knockout所做的那樣)。 –

+0

你說得對,我誤解了我在測試中看到的東西。 –