Datatables Ajax Cant отрисовывает компонент Vue

Я пытаюсь подключить Datatable в режиме Ajax и компонент Vue, который в случае успеха должен отобразить кнопку «Заказать» продукта. Я создал API для своего веб-приложения и через get-запрос передаю JSON в свойство таблицы AJAX. Все данные отображаются правильно, и даже одна кнопка - это заказ, но это не компонент Vue, а простой HTML. Поэтому я передаю в JSON эту строку

но в результате эта строка записывается в ячейку таблицы, она не преобразуется в vue-компонент ...

если я передаю эту строку в обычном режиме данных (без Ajax) - компонент отрисовывается, проблем нет.

Я использую Laravel 5.5

покажите, что у вас есть, и людям будет легче помочь

Giovanni S 14.09.2018 17:43

например: стандартный html компонента Vue: <orderbutton: orderid = 2> Order </orderbutton> Я помещаю этот html в файл JSON, а затем передаю AJAX и DataTable визуализирует это как текст, но не как настоящую кнопку

pc sound 16.09.2018 10:30

Я вот это описал datatables.net/forums/discussion/48598/…

pc sound 16.09.2018 10:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
3
1 033
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку в Vue легко обернуть / использовать компонент jQuery, пользователь часто ошибается, думая, что компоненты jQuery совместимы с Vue.

Одна из самых важных вещей, которую нужно понять, - это жизненный цикл компонента Vue (созданный, смонтированный и т. д. https://vuejs.org/v2/guide/instance.html#Instance-Lifecycle-Hooks). Возможно, вы сможете отобразить кнопку Vue внутри jQuery DataTable, но это потому, что вам повезло, что у вас есть данные на ранней стадии; т.е. у вас есть данные до того, как Vue полностью отрендерил компонент оболочки Vue.

Это объясняет, почему не работает ajax. Компонент уже отрисован. Несмотря на то, что компонент jQuery был повторно отрисован, он не будет отображать компонент Vue. Вы также столкнетесь с другими проблемами, такими как события Vue, неправильно подключенные при последующей перезагрузке / обновлении, компонент ведет себя некорректно (видимый, скрытый, v-if), потому что Vue является реактивным, а плагин / компонент jQuery обычно нет.

Следовательно, чтобы обернуть компонент jQuery, у вас есть два варианта:

  1. Вы должны уничтожать и воссоздавать компонент Vue каждый раз, когда вы получаете данные ajax, и отображать компонент jQuery в событии Vue created. Это помогает компоненту оболочки повторно отображать, подключать события и т. д. - частичное решение, см. Ответ Тони здесь: Vuejs и таблицы данных: таблица пуста при использовании v-for для заполнения данных

  2. Примите тот факт, что компонент jQuery не является реактивным, и создайте сверху слой перевода для взаимодействия с компонентом jQuery из Vue. Пример (бесстыдный плагин) моей обертки для компонента jQuery DataTable: https://github.com/niiknow/vue-datatables-net

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