2013-07-07 78 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> 

这必须帮助你。您可以通过此方法传递任何值。