Я создаю плагин для загрузочного бара для VueJS, и я хочу управлять данными компонента VueJS (часть плагина) с помощью плагина.Передача данных из VueJS Plugin в компонент VueJS
Таким образом, в конце концов, я хочу сделать следующее:
Включить плагин в main.js
import VueLoadingBar from 'path-to-plugin';
Vue.use(VueLoadingBar);
Включить плагин компонент в App.vue
<template>
<div id="app">
<vue-loading-bar><vue-loading-bar>
</div>
</template>
В различных компонентах Я хочу анимировать индикатор выполнения (например, Youtube) с this.$loadingBar.start()
.
Мой плагин состоит из плагина JavaScript файл ...
import LoadingBar from './LoadingBar.vue';
const vueLoadingBar = {
install() {
const loadingBarModule = {
start() {
// Start animating by setting the computed `progress` variable in the component, for simple
// demonstration with setInterval
setInterval(() => {
// How do I set `progress` that updates the component. Or is there an even better way to solve this?
}, 500);
}
}
Vue.component('vue-loading-bar', LoadingBar);
Vue.prototype.$loadingBar = loadingBarModule;
}
}
export default vueLoadingBar;
... и .vue
файл
<template>
<div class="c-loading-bar" :style="style"></div>
</template>
<script>
export default {
computed: {
style() {
return {
transform: `translateX(${this.progress}%)`,
}
},
progress() {
return 0;
}
/* other computed data */
}
}
</script>
<style>
.c-loading-bar {
position: fixed;
top: 0;
z-index: 20;
height: 5px;
background: red;
}
</style>
Что лучший способ компонент LoadingBar "контроль" из плагина (например, $ loadBar.start())?
Почему бы не сделать простой компонент загрузчика и сделать прогресс, чтобы контролировать его? Если вы действительно хотите использовать плагин, вы можете получить опору для прогресса и запустить некоторые события для завершенных/запущенных – AfikDeri
@AfikDeri. Я буду включать компонент только один раз в свое приложение, но я хочу контролировать (запускать анимацию загрузки) на разных частях мое приложение (например, AJAX, маршрутизация, в некоторых других случаях). Поскольку я не хочу включать новый компонент каждый раз, когда я что-то загружаю, мне нужна какая-то глобальная «функция» (таким образом, почему я думал, что мне нужно это. $ LoadBar'). Как вы получите оповещение о прогрессе и событиях огня в плагине? – Daniel