2015-08-18 64 views
0

我正在使用kogrid。我想根據該列中的數據將工具提示應用於特定列中的每個單元格。我的問題是要找到什麼時候/在哪裏放置我的jQuery的工具提示:如何在koGrid完全呈現後執行代碼?

$('[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

你應該使用Knockout,我的意思是你不應該使用jQuery來使用綁定處理器之外的DOM。爲您的工具提示製作自定義綁定處理程序。或者,也許http://billpull.com/knockout-bootstrap/會幫助你。 –

+0

@RoyJ - 感謝您對淘汰賽的引導!我一直在試圖找出自定義綁定處理程序的語法,並且knockout-bootstrap爲我實現它。你應該讓你的評論成爲一個答案。謝謝。 –

回答

1

在Knockout中,您只能通過綁定處理程序與視圖元素進行交互。 Knockout-Bootstrap爲Bootstrap小部件提供了許多綁定處理程序。

相關問題