2017-02-16 15 views
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のような)をアニメーション化したい。

私のプラグインの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コンポーネントを "制御" するための最良の方法は何プラグインの中から(これは$ loadingBar.start()など)?興味がある人々のために

+2

に次のコードを追加し、それを制御する進歩の小道具をする?プラグインを使用したい場合は、進歩のためにプロップを受け取り、完了/開始するためにいくつかのイベントを発生させることができます。 – AfikDeri

+0

@Afik​​Deriアプリケーション内にコンポーネントを1回だけ含めますが、ロード中のアニメーションを制御したい私のアプリケーション(例えば、AJAX、ルーティング、その他の場合)。私は何かをロードするたびに新しいコンポーネントをインクルードしたくないので、何らかのグローバルな "関数"が必要になるでしょう。(なぜ私は 'this。$ loadingBar'が必要なのでしょうか?どのようにあなたはプラグインで進歩と火災イベントの支柱を受け取りますか? – Daniel

答えて

0

:シンプルローダーコンポーネントをしないのはなぜ最後に、私はname私のコンポーネントにデータを与えた

export default { 
    data() { 
    return { 
     name: 'UNIQUE_NAME', 
    }; 
    } 
} 

と私のプラグインinstall機能

Vue.mixin({ 
    created() { 
    if (this.name === 'UNIQUE_NAME') { 
     console.log('You can now access the component with', this); 
    } 
    }, 
}); 
関連する問題