2013-07-07 79 views
3

我在這裏使用基本示例中的淘汰賽,其中我想將點擊項的值傳遞給函數。我嘗試了一些不起作用的東西。有人可以告訴我如何着手嗎?也許我錯了嗎?將價值傳遞給具有淘汰賽的功能

感謝您的幫助。

<div class='liveExample'> 
    <h2 data-bind="value: 'A', click: myFunction">Aaaaa</h2> 
    <h2 data-bind="value: 'B', click: myFunction">Bbbbb</h2> 
    <h2 data-bind="value: 'C', click: myFunction">Ccccc</h2> 
</div> 

// Here's my data model 
var ViewModel = function() { 

    this.myFunction = function (elm) 
    { 
     alert('you clicked: ' + elm); 
    } 
}; 

ko.applyBindings(new ViewModel()); // This makes Knockout get to work 

的jsfiddle這裏:http://jsfiddle.net/LkqTU/10229/

PS:我知道我們可以做到...click: function() { myFunction('A'); }">但我認爲這是一個更好的辦法。

回答

1

你可以從事件目標值(這是h2元素):

// Here's my data model 
var ViewModel = function() { 

    this.myFunction = function (data, event) 
    { 
     debugger; 
     alert('you clicked: ' + event.target.value); 
    } 
}; 

ko.applyBindings(new ViewModel()); 

瞭解更多關於click binding

+1

非常感謝。 – Bronzato

1

嘗試:

this.myFunction = function (vm, event) 
    { 
     alert('you clicked: ' + event.srcElement); 
    } 
+1

一些更詳細說明不會傷害我認爲:) – Jerry

+0

我同意。儘管第二個參數('event')有點自我解釋,OP可以意識到這是他正在尋找的東西。 – haim770

0
this.myFunction = function (val1, val2) 
{ 
    ...; 
} 

,並結合你必須設置:

<h2 data-bind="value: 'C', click: myFunction.bind($data, 'A', 'B')">Ccccc</h2> 

這必須幫助你。您可以通過此方法傳遞任何值。