我在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模板?
谢谢。
答案 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
})
},
}
})