HTML
你可以在html中看到我用两个参数调用editUser。 $ data是第一个参数,$ index()是第二个参数。它应该将第一个参数中的当前用户对象和foreach循环的索引作为第二个参数发送。
T
代码
<tbody data-bind="foreach: users">
<tr>
<td>
<div data-bind="click: $parent.editUser.bind($data, $index())" class="clickable icon black-icon big-icon icon-edit"></div>
</td>
<td data-bind="text: email"></td>
<td data-bind="text: username"></td>
<td data-bind="text: level"></td>
</tr>
</tbody>
输出
appViewModel.editUser = function( user, index ){
console.log(user);
console.log(index);
};
它以某种方式完全颠倒了参数。我无法解释这种行为。
答案 0 :(得分:1)
bind
的第一个参数是函数上下文。所以,如果你想传递2个参数,你需要这个:
$parent.editUser.bind($data, $data, $index())
这样,this
函数中的editUser
将成为foreach
次迭代中的当前项。
请参阅MDN