QuickBase: загружать файл JavaScript каждый раз, когда он ищет в таблицах

Итак, у меня есть файл javascript, который запускает, который внедряет другой файл javascript, который создает флажок для каждой строки. Файл загрузчика js выглядит так:

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

Эта таблица pageID 37 имеет функцию поиска. Проблема в том, что когда я выполняю поиск, введенный JavaScript больше не работает. Это означает, что флажок для строки больше не отображается в результате.

Есть идеи?

1 ответ

Решение

Содержимое отчета стирается и переписывается всякий раз, когда используется окно поиска. Поскольку страница не перезагружается, чтобы сделать это, все изменения, которые approve.js сделанные при загрузке не применяются к вновь созданным элементам. Вы можете использовать эту технику здесь, чтобы ваш код запускался после обновления этого отчета. Метод, который вы хотите кэшировать 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. Таким образом, вы изолированы от обновлений пользовательского интерфейса.

Другие вопросы по тегам