knockout.js foreach $ data AND $ index()?

时间:2015-06-11 15:34:58

标签: javascript knockout.js

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

它以某种方式完全颠倒了参数。我无法解释这种行为。

1 个答案:

答案 0 :(得分:1)

bind的第一个参数是函数上下文。所以,如果你想传递2个参数,你需要这个:

$parent.editUser.bind($data, $data, $index())

这样,this函数中的editUser将成为foreach次迭代中的当前项。

请参阅MDN