2017-04-25 7 views
1

vue Webアプリケーションを作成していますが、単純なファイル入力ですが、ファイル入力を表示または非表示にできるロジックがあります。問題は、ファイル入力を非表示にして再び表示すると、ファイル名を削除することです。変数がまだファイルを保持している間は、ファイル名は表示されません。v-ifを使用して非表示にされたファイルの入力がファイルに表示されない

ここにいくつかの関連するコードがあり、fiddleがこれを実演しています。

<div id="app"> 
    <button @click="switch1=!switch1">switch1</button> 
    <div v-if="switch1"> 
    <h4>Select an image</h4> 
    <input type="file" @change="onFileChange"> 
    </div> 
</div> 
+3

使用 'V-ショー= "スイッチ1"':これはDOM要素 – SLYcee

+0

を削除して、作成されませんうん@SLYceeは右である - 'V-IF 'v-show'は可視性のみをトグルするので、DOMから要素を削除します。 –

+1

これは、再入力されたときにバウンド値を持たない 'input'要素の動作を示します。ファイル入力の問題は、セキュリティ上の理由から、Javascriptから設定する方法がないことです。それらは読み取り専用です。そのため、 'v-model'を使うことができず、' change'ハンドラを使わなければならず、なぜ 'v-if'に基づいて再レンダリングすると値が消えます。 – Bert

答えて

0

あなたはv-ifを使用すると、入力が隠されていないが、それは、DOMから削除されます。

代わりv-showを使用し、要素を非表示にするには:

<div id="app"> 
    <button @click="switch1=!switch1">switch1</button> 
    <div v-show="switch1"> 
    <h4>Select an image</h4> 
    <input type="file" @change="onFileChange"> 
    </div> 
</div> 
関連する問題