首页 > 解决方案 > “这”未定义

问题描述

我使用 Vue-Multiselect https://vue-multiselect.js.org/#sub-getting-started创建了一个多选输入,如下所示

<multiselect v-on:select="myfilter()" v-model="cityF" 
:options="cities"  placeholder="City" label="name" track-by="name">

</multiselect>

但这在 myfilter 函数中始终是未定义的。问题是什么?我该如何解决?提前感谢。

标签: vue.jsmulti-select

解决方案


我只是猜测,但...

1 您使用字面意思This而不是this¯\_(ツ)_/¯

这很容易解决,只需使用“this”而不是“This”

2 您可能将函数定义为

methods:{
  myfilter: function() {
    console.log(this.whyNoWork);
  }
}

这不会使用正确的范围,而是使用

methods:{
  myfilter: function() {
    console.log(this.isWorking);
  }.bind(this)
}

或者更好

methods:{
  myfilter() {
    console.log(this.isWorking);
  }
}

3 您可能应该将模板定义为myfilter而不是myfilter(),除非您想将某些内容传递给它

<multiselect v-on:select="myfilter" v-model="cityF" 
:options="cities"  placeholder="City" label="name" track-by="name">
</multiselect>

更多的代码通常意味着更多的帮助,否则我们只是猜测。


推荐阅读