@AndrewRusinas

Можно ли внутри стороннего скрипта получить доступ к v-model?

Пока до конца не понимаю, как лучше решить мою задачу, поэтому думаю о всяких странных вещах, вроде этой.

Хочу вынести некоторую логику в отдельный класс, но внутри этого скрипта мне нужно иметь доступ к v-model, точнее, мне нужно просто иметь ссылку на массив, привязанный к конкретному списку.

Кода как такового пока нет, поэтому вот псевдо:
// Vue
<template lang="pug">
.application
    .items(v-model="array")
        .item(v-for="item in array") {{ item }}
</template>

<script>
import SomeScript from '@/SomeScript'
const script = new SomeScript()

export default {
    data() {
        return {
            array: [1, 2, 3, 4, 5, 6]
        }
    },
    beforeDestroy() {
        script.destroy()
    }
       
}
</script>


// Class
class SomeScript {
    constructor() {
        this.init()
    }

    init() {
        document.addEventListener('mousedown', this.mousedownHandler)
    }

    destroy() {
        document.removeEventListener('mousedown', this.mousedownHandler)
    }

    mousedownHandler(event) {
        const items = event.target.closest('.items')

        // Вот тут хочу получить доступ к v-model 
        items['some-magic-to-get-access-to-data-array'].sort() 
    }
}


Не знаю, как точнее сформулировать вопрос, поэтому очень надеюсь, что суть ясна. Но повторюсь: хочу вынести логику отдельно от Vue, но при этом с доступом к свойствам его экземпляра. Я мог бы довольно легко сделать это плагином или просто компонентом, но вопрос именно в том, насколько возможно абстрагироваться от структуры Vue в данном случае.

Это делается по двум причинам: из интереса и для простоты миграции кода в другие проекты при необходимости (независимо от фреймворка).
  • Вопрос задан
  • 55 просмотров
Пригласить эксперта
Ответы на вопрос 1
@andreysuha
Что то знаю
Можно создавать екземпляр SomeScript внутри хука сreated и предавать в него нужные данные аргументом
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы