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

4

3 回答 3

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());

阅读有关点击绑定的更多信息

于 2013-07-07T09:32:03.337 回答
1

尝试:

this.myFunction = function (vm, event)
    {
        alert('you clicked: ' + event.srcElement);
    }
于 2013-07-07T09:32:25.357 回答
0
this.myFunction = function (val1, val2)
{
    ...;
}

在绑定中,您必须设置:

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

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

于 2013-07-07T09:35:00.603 回答