koGrid完全渲染后如何执行代码?

时间:2015-08-18 13:17:57

标签: javascript jquery knockout.js kogrid

我正在和kogrid一起工作。我想根据该列中的数据将工具提示应用于特定列中的每个单元格。我的问题是找到确切地/何时放置我的工具提示jquery:

$('[data-toggle="tooltip"]').tooltip();

我使用的colDef是:

var myCol = {
    headerClass: 'koGridCentered',
    displayName: 'My Display',
    field: 'RootError',
    cellTemplate: '<div style="margin-top: 3px;" >' +
        '<div data-bind=" attr: { \'class\': \'kgCellText colt\' + $index() }">' +
            '<a href="#" data-toggle="tooltip" data-bind=" attr: { \'title\': $data.getProperty($parent) }, html: $data.getProperty($parent)"></a>' +
        '</div>' +
    '</div>',
    sortable: true, resizeable: true
}

从ajax请求返回数据。我尝试将jquery放入axaxStop块:

$(document).ajaxStop(function() {
    $('[data-toggle="tooltip"]').tooltip();
}

但这是在kogrid呈现所有行之前调用的。

我已经使用了setTimeout并简单地延迟了X毫秒,然后应用了工具提示,这很有效,但感觉就像是黑客。

$(document).ajaxStop(function() {
    setTimeout(function() {
        $('[data-toggle="tooltip"]').tooltip();
    }, 10);
});

在将数据推送到我的viewmodel后,我也尝试调用工具提示。

for (var i = 1; i < data.length; ++i) {
    _this.SharedViewModel.MyCollection.push(ko.mapping.fromJS(data[i]));
}
$('[data-toggle="tooltip"]').tooltip();

这最终将工具提示应用于前7行而不是剩余的行。

我真正想要的是一种访问网格完全渲染时触发的一些kogrid事件的方法。我已经搜索过这个并且没有想出任何东西,所以我要求社区。

我注意到还有一个小问题,就是我的工具提示隐藏在它上面的kogrid单元格下面。但这很小,我希望用z-index解决。

1 个答案:

答案 0 :(得分:1)

在Knockout中,您应该只通过绑定处理程序与View元素进行交互。 Knockout-Bootstrap为Bootstrap小部件提供了许多绑定处理程序。