2016-08-06 4 views
1

Vue.jsでかなりアップローダーを書こうとしています。私はちょうど<input type="file">要素を隠し、mdlボタンがクリックされている間、トリガークリック機能をします。ファイル入力のクリック機能を「v-on」イベントにバインドする方法は?

次のコードは私の実装です。

テンプレート:

<form method="post" action="#" @submit.prevent=""> 
    <input id="fileInput" type="file"> 
    <mdl-button type="submit" @click="onClick" colored raised> 
    <span>Upload</span> 
    </mdl-button> 
</form> 

スクリプト:

export default { 
    data() { 
    return { 
     filePath: null 
    } 
    }, 
    methods: { 
    onClick: function (e) { 
     document.getElementById('fileInput').click() 
    } 
    } 
} 

スタイル:

#fileInput { 
    display: none; 
} 

我々はdocument.getElementByIdはVueのスタイルではないことに気づくことができます。

fileInputのクリック機能をmdl-buttonのクリックイベントにバインドするのはどうですか?

答えて

1

mdl-button<label>タグに変更するだけで簡単にできます。それは同様にそれが意味的に、より貴重とアクセスできるようになります。

<form method="post" action="#" @submit.prevent=""> 
    <input id="fileInput" type="file"> 
    <mdl-button type="submit" colored raised> 
    <label for="fileInput">Upload</label> 
    </mdl-button> 
</form> 

を私はあなたの<mdl-button>コンポーネントが含まれているマークアップのどのようなわからないんだけど、あなただけ<label>とボタン要素として使うものは何でも交換することをお勧めします素子。

+0

ラベルをクリックしたときにのみ動作します。 mdl-buttonをクリックすると、ファイル選択ウィンドウがポップアップしません。 –

+0

さて、私が書いたように、おそらく ''の基本要素をラベルに置き換える必要があります。私は 'mdl-button'がどのように見えるのか分からないので、それが可能かどうかはわかりません... – nils

関連する問題