2016-03-25 42 views
0

好吧,所以我有一個JavaScript文件啓動它注入另一個JavaScript文件,每行創建複選框。 js加載程序文件如下所示:QuickBase:每次在表格中搜索時加載JavaScript文件

//Run these scripts on all table pages 
if (gReqTemplName == "searchresults") { 
    console.log(kRecordNamePlural, gReqQID); 
    if ((kRecordNamePlural == "Time Cards" && gReqQID == 37) || (kRecordNamePlural == "Milestone Payments" && gReqQID == 11) || (kRecordNamePlural == "Expenses" && gReqQID == 11)) { 
     $.getScript('/js/QuickBaseClient.js', function (data) { 
      $.getScript(gReqAppDBID + '?a=dbpage&pagename=approve.js'); 
     }); 
    }; 
} 

此特定pageID37表具有搜索功能。問題是,當我執行搜索時,注入的JavaScript不再工作。意思是,每行的複選框不會再顯示在結果中。

任何想法?

回答

1

只要使用搜索框,報告的內容就會被刪除並重寫。由於該頁面不會被重新加載,所以approve.js在加載時所做的任何更改都不會應用於新創建的元素。您可以使用此技術here在報告更新後運行代碼。要緩存的方法是QB.Faceting.Instance.tableHomePageView.reportView.updateReport,將是這個樣子:

QB.Faceting.Instance.tableHomePageView.reportView.updateReport = (function(){ 
    var cachedFunction = QB.Faceting.Instance.tableHomePageView.reportView.updateReport; 
    return function(){ 
     var result = cachedFunction.apply(this, arguments); 
     // Your code that inserts checkboxes 
    }; 
})(); 

注:這將停止工作,如果Quickbase改變其方法的名稱或方式搜索框工作。如果這是一個關鍵的業務功能,您可能希望編寫一個自定義頁面來處理其自己的佈局,並通過API調用更改記錄。這樣你就不需要UI更新。

+0

非常感謝!有效! – jake

相關問題