可以在Knockout中使用hasFocus绑定来确定表当前行索引

时间:2014-06-20 18:37:12

标签: knockout.js

我想知道用户导航或点击的表格中的哪一行。

可以使用Knockout hasFocus绑定来跟踪当前行索引,以便在视图模型中我可以根据需要获取该行索引值吗?

该表以这种方式填充:

    <tbody data-bind="foreach: sitesList">
        <tr>
             <td data-bind ... > </td>
             <td data-bind ... > </td>
                .
                .
                .

               et cetera

1 个答案:

答案 0 :(得分:1)

可能有更好的方法来做到这一点,但......

HTML:

<table>
    <tbody data-bind="foreach: sitesList">
        <tr data-bind="event: { focusout: $parent.updateSelectedRow }">
             <td data-bind="text: $data"></td>
        </tr>
    </tbody>
</table>

Index: <span data-bind="text: selectedRowIndex"></span>

JS:

function ViewModel()
{
    var self = this;
    self.selectedRowIndex = ko.observable();
    self.sitesList = ko.observableArray(["google.com", "bing.com", "yahoo.com"]);

    self.updateSelectedRow = function(row)
    {
        self.selectedRowIndex(self.sitesList.indexOf(row));
    };
}

ko.applyBindings(new ViewModel());

这是一个小提琴的链接,演示了它的工作原理:http://jsfiddle.net/TrueEddie/L3YP4/2/

修改

将其更改为使用事件绑定。我用mouseenter工作了。也许您可以使用onfocus事件?