Я новичок в Vue, и я пытался использовать Vue с таблицами данных jquery. Я работаю над проектом, в котором мне нужно использовать таблицы данных jquery. В следующих фрагментах кода я попытался объединить Vue с таблицами данных jquery, но это не сработало. В результате не создается ни таблица данных, ни контент. (Я использую Vue без npm)
Я был бы признателен, если бы кто-нибудь мог мне помочь.
HTML
<link rel = "stylesheet" type = "text/css" href = "https://cdn.datatables.net/1.12.1/css/jquery.dataTables.min.css">
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script type = "text/javascript" charset = "utf8" src = "https://cdn.datatables.net/1.12.1/js/jquery.dataTables.min.js"></script>
<section id = "arbeitsbereich">
<template>
<h1>Test</h1>
<table class = "table table-hover table-bordered" id = "example">
<thead>
<tr>
<th>User-ID</th>
<th>ID</th>
<th>Title</th>
<th>Completed</th>
</tr>
</thead>
<tbody>
<tr v-for = "user in users" :key = "user.id">
<td>{{user.userId}}</td>
<td>{{user.id}}</td>
<td>{{user.title}}</td>
<td>{{user.completed}}</td>
</tr>
</tbody>
</table>
</template>
</section>
<!--Version 3.2.36 (https://cdnjs.com/libraries/vue)-->
<script src = "vue.global.prod.min.js"></script>
<script src = "arbeitsbereich-vue.js"></script>
Javascript
const { createApp } = Vue
const app = createApp({
data() {
return {
users:[]
}
},
mounted() {
$.ajax({
url: 'https://jsonplaceholder.typicode.com/todos/',
method: 'GET',
dataType: 'json',
contentType: 'application/json',
success: res => {
this.users = res;
$('#example').DataTable({
data: res
});
}
});
}
});
app.mount('#arbeitsbereich');
Я использую jquery только для Datatable, потому что требования проекта.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам следует избегать смешивания шаблонов, управляемых Vue, и jQuery. Они работают в разных парадигмах, и ваш конечный код, скорее всего, будет страдать от проблем с ремонтопригодностью в будущем.
Тем не менее, у вашей демонстрации есть несколько проблем:
<template> внутри вашего HTML бесполезен, удалите его.this.users, прежде чем вызывать $().DataTable(). Вы можете сделать это, используя Vue.nextTick().См. рабочую демонстрацию ниже.
const { createApp } = Vue
const app = createApp({
data() {
return {
users:[]
}
},
mounted() {
$.ajax({
url: 'https://jsonplaceholder.typicode.com/todos/',
method: 'GET',
dataType: 'json',
contentType: 'application/json',
success: res => {
this.users = res;
Vue.nextTick(() => {
$('#example').DataTable();
});
}
});
}
});
app.mount('#arbeitsbereich');<link rel = "stylesheet" type = "text/css" href = "https://cdn.datatables.net/1.12.1/css/jquery.dataTables.min.css">
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script type = "text/javascript" charset = "utf8" src = "https://cdn.datatables.net/1.12.1/js/jquery.dataTables.min.js"></script>
<script src = "https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
<section id = "arbeitsbereich">
<h1>Test</h1>
<table class = "table table-hover table-bordered" id = "example">
<thead>
<tr>
<th>User-ID</th>
<th>ID</th>
<th>Title</th>
<th>Completed</th>
</tr>
</thead>
<tbody>
<tr v-for = "user in users" :key = "user.id">
<td>{{user.userId}}</td>
<td>{{user.id}}</td>
<td>{{user.title}}</td>
<td>{{user.completed}}</td>
</tr>
</tbody>
</table>
</section>
Я думаю, что вы не должны смешивать VueJS и jQuery, вместо этого вы должны использовать библиотеку vue для таблиц данных, таких как hc200ok.github.io/vue3-easy-data-table-doc/introduction.html