使用v-on Instance Method时无法找到方法

时间:2015-08-29 23:27:58

标签: 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模板? 谢谢。

1 个答案:

答案 0 :(得分:4)

基于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
      })
    },
  }
})