开发者问题收集

VueJS = Uncaught TypeError:无法读取未定义的属性“设置”

2020-08-01
982

我有一个基本输入,它应该在输入更改时更新数据,但是没有,因为它返回 Uncaught TypeError: Cannot read property 'settings' of undefined

Vue 组件

<template>
    <div>
        <div class="inner_container">
          <p>
            URL:
            <span>{{settings.url}}</span>
          </p>
          <div class="input_row">
            <input
              class="input_text"
              id="getURL"
              type="url"
              inputmode="url"
              placeholder="Enter URL"
              title="URL"
              @input="changeUrl"
            />
            <label class="label_" for="getURL">URL Link</label>
          </div>
          <button class="button" @click="saveSettings">Save all Values</button>
        </div>
    <div>
</template>

<script>
import axios from "axios";
import _ from "lodash";

export default {
  name: "Home",
  data() {
    return {
      settings: {
        brightness: "",
      },
    };
  },
  methods: {
    changeUrl: _.debounce((e) => {
      this.settings.url = e.target.value;
    }, 500),
  },
};
</script>

每次输入更改时我都会收到上述错误。

我做错了什么 ?

3个回答

问题是 在箭头函数中此 不是指所需的对象。一种解决方案是使用普通函数并预先定义属性 url in settings

016325200

您可以使用一种更简单的方法找到有用的是使用 V-Model

927558588 设置变量。
Majed Badawi
2020-08-01

你好,尝试像这样使用去抖动:

_.debounce(function(e) {
  this.settings.url = e.target.value;
}, 500)
Giovanni Esposito
2020-08-01

问题在于,您在未在 JS 类上调用的语句中使用了 this 。通过将 this 更改为变量名,并将该变量名设置为类来解决此问题。

Maimas2
2020-08-01