【问题标题】:[Vue warn]: Error in v-on handler: "TypeError: Cannot read property 'Array' of undefined"[Vue 警告]:v-on 处理程序中的错误:“TypeError:无法读取未定义的属性 'Array'”
【发布时间】:2021-10-25 00:31:41
【问题描述】:

我想在单击按钮时检查输入是否为空如果其中一个输入为空,则过滤数组我尝试向数组添加错误,但是当我单击按钮时出现错误 "'ErrorList' of undefined" 我认为错误是我试图在一个名为save 的方法中获取一个名为ErrorList 的数组,但是我该如何摆脱这个问题呢?也可以看看my code in codesandbox

<template>
  <div>
    <form>
      <div v-for="(learning, i) in general.learnings" :key="i">
        <input type="text" v-model="general.learnings[i]" maxlength="120" />
      </div>

      <button @click="save">Save</button>
    </form>
  </div>
</template>

<script>
export default {
  methods: {
    save(e) {
      e.preventDefault();

      this.general.learnings.filter(function (el) {
        if (el !== "") {
          return true;
        } else {
          this.errorList.push("Error");
        }
      });
    },
  },
  data() {
    return {
      errorList: [],
      general: {
        learnings: ["", ""],
      },
    };
  },
};
</script>

【问题讨论】:

  • 尝试使用箭头函数访问this,如this.general.learnings.filter( (el)=&gt; {

标签: javascript arrays vue.js vuejs2


【解决方案1】:

发生这种情况是因为this 的引用没有引用filter 中的组件。

只需更改箭头功能即可解决问题。

 this.general.learnings.filter( (el) => {
        if (el !== "") {
          return true;
        } else {
          this.errorList.push("Error");
        }
      });

【讨论】:

    最近更新 更多