有一个组件包含输入[type = file] 。 此外,此字段还有一个 uploadFile 处理程序,该处理程序调用 validateMessage 方法,该方法尝试更改错误。正如您所看到的,在更改this.error之后,它表明一切都是正确的。但是在div.error中它没有显示,如果你查看vueDevtool,那么也是空的。 data in vueDevTools
data() {
return {
error: ''
}
},
methods: {
validateFile(file) {
if (! file.type.includes('video/')) {
this.error = 'wrong format';
console.log(this.error); // wrong format
}
},
uploadFile(e) {
const file = e.target.files[0];
this.validateFile(file);
},
}

<input type="file"
id="im_video"
name="im_video"
@change="uploadFile"
class="hidden">
<div class="error">
{{ error }}
</div>
&#13;
答案 0 :(得分:0)
这是工作示例。
new Vue({
el:'#app',
data() {
return {
error: ''
}
},
methods: {
validateFile(file) {
console.log(file.type);
if (! file.type.includes('video/')) {
this.error = 'wrong format';
//console.log(this.error); // wrong format
}
},
uploadFile(e) {
this.error = '';
const file = e.target.files[0];
this.validateFile(file);
},
}
});
&#13;
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app">
<input type="file"
id="im_video"
name="im_video"
@change="uploadFile"
class="hidden">
<div class="error">
{{ error }}
</div>
</div>
&#13;
如果您正在使用组件,这将有助于您在案例设置error
从子组件到父组件
Vue.component('upload-file',{
template:`<div><input type="file"
id="im_video"
name="im_video"
@change="uploadFile"
class="hidden"></div>`,
data() {
return {
error: ''
}
},
methods: {
validateFile(file) {
//
if (! file.type.includes('video/')) {
vm.$emit('filerror', 'wrong format');
}
},
uploadFile(e) {
vm.$emit('filerror', '');
const file = e.target.files[0];
this.validateFile(file);
},
}
});
const vm = new Vue({
el:'#app',
mounted(){
this.$on('filerror', function (msg) {
this.error = msg;
})
},
data:{
error:''
}
});
&#13;
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app">
<upload-file></upload-file>
<div class="error">
{{ error }}
</div>
</div>
&#13;