2017-03-16 33 views
0

我在参数的传递到从HTML功能迷茫结合。淘汰赛点击带有多个参数

<tbody data-bind="foreach: colorItem"> 
    <tr> 
     <td data-bind="click: $root.colorTest.bind($data, 'red', 'blue'), text: 'color'"></td> 
    </tr> 
</tbody> 


public colorTest(data, param1, param2) { 
    if (param1 == 'red'){ 
     // do something 
    } 

在colorTest功能,我希望“数据”来保存$ DATA和“参数1”持有价值“红色”和“参数2”持有价值“蓝色”。

然而,$数据始终被传递到最后一个参数字段。所以在colorTest函数中,data ='red',param1 ='blue',param2 ='$ data'。

这是淘汰赛是如何工作的? $ data始终作为最后一个参数传递给一个函数,即使它首先放在HTML data-bind中?

回答

2

的.bind功能不是淘汰赛这是一个JavaScript函数,并且第一个参数始终应该是“这个”背景下的一部分。所以只有第一个参数后面的参数作为参数传入。 Reference

你应该修改你的绑定,如下所示:

click: $root.colorTest.bind($root, $data, 'red', 'blue') 

淘汰赛与$数据和$事件,其中获得绑定的参数之后通过调用函数。

+0

谢谢。这工作。但是,我需要$数据明确传递?正如你所说的,Knockout auto在绑定的参数后面发送了$ data和$ event(我看到了这个)。那么它实际上是两次发送$数据?它会更好用“... colorTest.bind($根,‘红’,‘蓝’),然后捕获与我的函数的第三个参数的$数据,以便它看起来像”公共colorTest(参数1,参数2 ,数据)“? – nanonerd

+0

是的,这也应该工作。 –