Javascript 使用nuxt.js导入文件(Vue等效于getElementById())

Javascript 使用nuxt.js导入文件(Vue等效于getElementById()),javascript,vue.js,nuxt.js,Javascript,Vue.js,Nuxt.js,在我的一个组件中加载文件时遇到问题。在我使用getElementById()移动到Vue之前,它已经工作了。以下是我尝试过的: 在模板中: <input type="file" accept=".obj" id="file" ref="OBJImport" name="objFile" @change="loadFileAsText()" single /> 在方法上: methods: { loadFileAsText: function() { if

在我的一个组件中加载文件时遇到问题。在我使用getElementById()移动到Vue之前,它已经工作了。以下是我尝试过的: 在模板中:

<input type="file" accept=".obj" id="file" ref="OBJImport" name="objFile" @change="loadFileAsText()" single />
在方法上:

methods: {  
    loadFileAsText: function() {
        if(process.client) {
            this.files = this.$refs.OBJImport.files[0];
            console.log(files);
         }
    }
但当我尝试上传文件时,我得到:

ReferenceError: files is not defined
我也尝试过不使用
[0]
。将
.files[0]
更改为
.file
仍然会对
文件产生相同的错误。我应该怎么做才能将我的文件从模板转换到我的方法?谢谢

从更改事件中删除
()

<input type="file" accept=".obj" id="file" ref="OBJImport" name="objFile" @change="loadFileAsText" single />
您记录的
文件不存在,这是您唯一的错误。

此外,我还提供了另一种获取文件的方法。

工作得很好,解释得很好。非常感谢。
<input type="file" accept=".obj" id="file" ref="OBJImport" name="objFile" @change="loadFileAsText" single />
methods: {  
  loadFileAsText: function(e) {
    if(process.client) {
      //this.files = this.$refs.OBJImport.files[0];
      //console.log(files); // Here is this.files, not files, this is your initial error.
      this.files = e.target.files[0];
      console.log(this.files);
  }
}