1
私はVueJS用のローディングバープラグインを作成しています。プラグインを使用してVueJSコンポーネント(プラグインの一部)のデータを制御したいと思います。私は次のことをやってみたい最後にそうVueJSプラグインからVueJSコンポーネントにデータを渡す
、:
はApp.vue
さまざまなコンポーネントで<template>
<div id="app">
<vue-loading-bar><vue-loading-bar>
</div>
</template>
でのプラグインコンポーネントを含めるmain.js
import VueLoadingBar from 'path-to-plugin';
Vue.use(VueLoadingBar);
でプラグインを含めます私はthis.$loadingBar.start()
と進行状況バー(例えば、Youtubeのような)をアニメーション化したい。
...
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コンポーネントを "制御" するための最良の方法は何プラグインの中から(これは$ loadingBar.start()など)?興味がある人々のために
に次のコードを追加し、それを制御する進歩の小道具をする?プラグインを使用したい場合は、進歩のためにプロップを受け取り、完了/開始するためにいくつかのイベントを発生させることができます。 – AfikDeri
@AfikDeriアプリケーション内にコンポーネントを1回だけ含めますが、ロード中のアニメーションを制御したい私のアプリケーション(例えば、AJAX、ルーティング、その他の場合)。私は何かをロードするたびに新しいコンポーネントをインクルードしたくないので、何らかのグローバルな "関数"が必要になるでしょう。(なぜ私は 'this。$ loadingBar'が必要なのでしょうか?どのようにあなたはプラグインで進歩と火災イベントの支柱を受け取りますか? – Daniel