vue.js - 使用 v-on Instance Method 时找不到方法

标签 vue.js

我在 js 模板(稍后在组件中使用)中使用 v-on 来触发点击事件:

v-on='click : favoritesToggle(venue.slug, $event)'

但是当我点击它时,我得到了

Uncaught TypeError: scope.favoritesToggle is not a function

vue 对象仍然在控制台中找到它:

vm.favoritesToggle
> exports.bind(a)

我在同一页面上还有一些其他的 v-on 单击事件并且运行良好,但它们不在 js 模板中,这可能与找不到方法有关,因为我是在js模板中点击触发? 谢谢。

最佳答案

基于 docs我理解在组件内调用的方法应该放在该组件内。

示例:

Vue.component('venue-component', {
  template: $('#venue-template').html(),
  methods: {
    favoritesToggle: function (slug, e) {
      e.preventDefault()
      var resource = this.$resource('/api/venues/' + slug + '/favorites_toggle')

      resource.save({
        method: 'like' // unlike
      }, function (data) {})
        .success(function (data, status, request) {
        // handle success
        }).error(function (data, status, request) {
        // handle error
      })
    },
  }
})

关于vue.js - 使用 v-on Instance Method 时找不到方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32291675/

相关文章:

vue.js - 尝试将转换键值的 json 从 laravel blade 传递到 vue.js 时出现问题

javascript - 如何循环遍历数组并创建带有类别的术语表列表

vue.js - 带有自定义按钮添加和删除的 Bootstrap Vue 表

css - 为什么 @keyframes 动画不适用于 Vue.js?

javascript - 在 v-if 和 else 条件中给定时,btn-next 不起作用?

css - Vuetify 日历高度问题

javascript - Vue Router this.$router.push 不处理方法

vue.js - Vuetify 中 <v-data-table> 中的水平对齐

javascript - vue 转换模式 ="out-in"返回 ref 元素为未定义

javascript - VueJS : Passing data from root element to child components through router-view