2017-01-18 23 views
0

Я пытаюсь использовать плагин таблицы «» для jQuery для простого Domino XPage.Попытка избежать многократных вызовов jQuery в Domino XPage

Я загрузил две необходимые библиотеки из CDN в ...

JQuery: ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js

DataTables: CDN .datatables.net/1.10.13/css/jquery.dataTables.min.css

Я также попытался загрузить их из локальных ресурсов (не помогает).

я затем подготовить основную таблицу на моем XPage, и включают в себя необходимые Javascript для инициализации таблицы ...

$(document).ready(function() { 
    $('#tableID').DataTable(); 
}); 

Когда я испытываю XPage, я постоянно наблюдать

test.xsp:15 Uncaught TypeError: $(...).DataTable is not a function 

I вы просматривали несколько форумов, и общий консенсус в том, что ...

a) Я загрузил библиотеки в неправильном порядке (нет!)

б) Я нагружал JQuery несколько раз (как?)

У меня есть много других решений, используя Bootstrap и JQuery, и никогда прежде не столкнуться с этой проблемой. Итак, хотя я мог бы удалить XPage обратно на голые кости. Я избавилась от всех элементов Dojo на странице, добавив следующую строку в файл «xp.properties» ...

xsp.client.script.libraries=none 

Это на самом деле, казалось, работать! Я больше не наблюдал ошибку. Однако моя страница больше не выглядела так, как должна (по понятным причинам!). Мне пришлось восстановить файл «xp.properties» обратно в исходное состояние, но не могу узнать, как избежать ошибки.

Кто-нибудь успешно использовал плагин jQuery 'DataTables' для XPage? Любые отзывы или предложения были бы оценены наиболее высоко!

ответ

6

Да, я выполнял нагрузку на DataTables в XPages, так что это определенно работает! Я знаю вашу боль, хотя .... Порядок ваших сценариев jquery по отношению друг к другу может быть в порядке, однако есть столкновение с додзе, и это загрузчик AMD, поэтому у вас есть 3 варианта.

Вариант 1. Загрузите ваши JQuery скриптов до любого из XPages сценариев

Вариант 2. удалить «драмы загрузчика» как раз перед вашим Jquery скрипты, а затем восстановить его только после того, как

Варианта 3. модифицировать Javascript из DataTables поэтому игнорирует АМД проблемы

Вариант 1: Загрузка ваших JQuery скриптов первых

Если вы используете агрегацию ресурсов, у ou может использовать этот совет из блога Sven Hasselbach, в котором вы используете общий тег ресурса «headTag», и он загрузится первым. http://hasselba.ch/blog/?p=1181

Если вы хотите, решение, которое будет работать независимо от настройки агрегирования ресурсов, у меня есть пример на моем блоге, в котором вы можете создать viewRootRenderer, который затем позволит вам определить, что вы хотите, скрипт загружен, прежде чем все остальное http://camerongregor.com/2016/09/19/controlling-the-order-of-script-resources-e-g-jquery-with-a-custom-viewrootrenderer/

Вариант 2. Удаление загрузчика AMD перед загрузкой скриптов

Существует xsnippet, который объясняет, как удалить и затем восстановить загрузчик драм, так что JQuery плагин загрузит https://openntf.org/xsnippets.nsf/snippet.xsp?id=hack-to-use-jquery-amd-widgets-and-dojo-together

Sven уже сделал подобное решение заминировать выше (viewRootRenderer), в котором можно указать, какие сценарии будет нужен драм загрузчик отключен, и он будет делать это для вас, он доступен здесь http://hasselba.ch/blog/?p=2070

Вариант 3: изменить javascript плагина jquery (datatables)

Марк Роден продемонстрировал это в своем блоге. Мне не нравится это делать, но это работает! https://xomino.com/category/jquery-in-xpages/

Дайте мне знать, если это работает! Надеюсь, что я прав, с javascript я никогда не знаю ...

+0

Спасибо, много Cameron! Вы были на месте, и вы действительно помогли мне преодолеть это препятствие. Забавно, что я помню, как читал пару этих сообщений в блоге, когда они были впервые выпущены, - не был знаком с контекстом, поэтому мне никогда не приходило в голову, что они здесь применимы. До сих пор самым простым маршрутом было использование тега ресурса «headTag» Sven - отлично работало (до сих пор). Cheers mate! –

+0

Не стоит беспокоиться о Терри, я помню, что я чувствовал то же самое, что в нескольких разных блогах были бит и кусочки этой проблемы. Я использовал headTag и вариант 3, очень сильно изменяю javascript, но теперь перешел к реализации пользовательского viewRootrenderer, Не стоит беспокоиться об агрегировании. Рад, что это помогает –

 Смежные вопросы

  • Нет связанных вопросов^_^