首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义Vue.js方法

未定义Vue.js方法
EN

Stack Overflow用户
提问于 2018-12-05 14:37:19
回答 2查看 3.7K关注 0票数 1

下面是方法的一些问题,我的组件无法访问方法。我可以把像螺旋桨这样的方法传递给组件吗?

这是我的html:

代码语言:javascript
复制
<guests v-bind="guests"></guests>

以下是js文件中的组件

代码语言:javascript
复制
var guestsComponent = Vue.component("guests", {
  props: ['adultCount', 'childCount'],
  template: `
    <div class="guests-total">
      <div>
      <a @click="decrementAdult"></a>
      <a @click="incrementAdult"></a>
      <input type="text" placeholder="adults"/> {{adultCount}}
      </div>
    </div>
  `
});

这里,在同一个js文件中,我的vue init和方法

代码语言:javascript
复制
var app = new Vue({
  el: "#search",
  components: {
    "guests": guestsComponent
  },
  data() {
    return {
      guests: {
        adultCount: 0,
        childCount: 0
      }
    };
  },
  methods: {
    decrementAdult() {
      this.guests.adultCount++
    },
    incrementAdult() {
      this.guests.adultCount--
    }
  }
});

当我使用道具时,我可以毫无问题地访问数据,但是我不知道如何传递像道具这样的方法,或者这是必需的?

下面是控制台上的错误:

代码语言:javascript
复制
ReferenceError: decrementAdult is not defined
    at o.eval (eval at xa (vue.min.js:NaN), <anonymous>:3:88)
    at o.fn._render (vue.min.js?f6b5:6)
    at o.eval (vue.min.js?f6b5:6)
    at St.get (vue.min.js?f6b5:6)
    at new St (vue.min.js?f6b5:6)
    at o.hn.$mount (vue.min.js?f6b5:6)
    at o.hn.$mount (vue.min.js?f6b5:6)
    at init (vue.min.js?f6b5:6)
    at eval (vue.min.js?f6b5:6)
    at b (vue.min.js?f6b5:6)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-05 14:51:00

由于click事件是在子组件guests中完成的,所以您应该向父组件发出一个事件,并在那里处理它,如下所示:

代码语言:javascript
复制
    ....
    <a @click="$emit('decrement-adult')"></a>
     ...

在父组件中做:

代码语言:javascript
复制
   <guests v-bind="guests" @decrement-adult="decrementAdult"></guests>
票数 2
EN

Stack Overflow用户

发布于 2022-10-25 17:07:15

我在下面的代码部分中遇到了类似的'method1' is not defined错误:

代码语言:javascript
复制
methods: {
    method1(){
      console.log("running method1()");
    },
    method2(){
      method1();
    },
    ...

问题是,对method1()的引用应该包括this关键字,如下所示:

代码语言:javascript
复制
export default {
  name: 'TuringMachine',
  props: {
    msg: String,
  },
  data() {
  },
  methods: {
    method1(){
      console.log("running method1()");
    },
    method2(){
      this.method1();
    }
  }
}

希望这对任何有同样问题的人都有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53634692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档