DataTable не является функцией Liferay 7 - PullRequest
0 голосов
/ 02 июля 2018

Это мой текущий код на liferay:

<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.18/css/jquery.dataTables.css">
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.18/js/jquery.dataTables.js"></script>

    <html>
    <table id="table_id" class="display">
        <thead>
            <tr>
                <th>Column 1</th>
                <th>Column 2</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Row 1 Data 1</td>
                <td>Row 1 Data 2</td>
            </tr>
            <tr>
                <td>Row 2 Data 1</td>
                <td>Row 2 Data 2</td>
            </tr>
        </tbody>
    </table>

    <script>
    $(document).ready( function () {
        $('#table_id').DataTable();
    });

    </script>

    </html>

Я не импортировал никакую ссылку jquery, потому что по умолчанию она уже находится в liferay 7 (проверено с помощью функции jQuery), поэтому я просто скопировал datatable CDN в мой liferay.

Однако в нем говорится, что datatable не является функцией. Могу ли я неправильно ссылаться на datatables? (вряд ли) или мне снова понадобится ссылка на jQuery? (пытался, но может вызвать конфликт).

p / s тот же код может запускаться на jsfiddle и отображать данные >> jsfiddle

1 Ответ

0 голосов
/ 02 июля 2018

Чтобы использовать этот плагин jQuery, вам нужно отключить Liferay JS Loader, как описано здесь: https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/using-external-libraries.

В вашем случае ваш код для импорта DataTables JS может быть:

<script>
    Liferay.Loader.define._amd = Liferay.Loader.define.amd;
    Liferay.Loader.define.amd = false;
</script>
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>
<script>
    Liferay.Loader.define.amd = Liferay.Loader.define._amd;
</script>

Вы должны добавить приведенный выше фрагмент внизу вашей пользовательской темы (в файле portal_normal.ftl, непосредственно перед закрывающим тегом body).

...