将值传递给具有敲除功能的函数

时间:2013-07-07 09:23:52

标签: javascript knockout.js

我在这里使用了一个非常基本的例子,其中我想将点击的项目的值传递给函数。我尝试了一些不起作用的东西。有人可以告诉我如何继续吗?也许我的做法不对?

感谢您的帮助。

<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'); }">,但我认为有更好的方法。

3 个答案:

答案 0 :(得分: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 :(得分:1)

尝试:

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

答案 2 :(得分:0)

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

在绑定中你必须设置:

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

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