我无法让它发挥作用。 v-on:click事件未在Vue实例上调用该方法。这是代码:
<div id="app">
<button class="btn btn-success" v-on:click="postEventData">
<i class="icon wb-share"></i> Publish
</button>
</div>
Vue实例:
var vm = new Vue({
el: '#app',
data: {
someData: 'fooBar'
},
methods: {
postEventData: function () {
axios.post('/foobar', vm._data);
}
}
});
任何帮助将不胜感激!
答案 0 :(得分:1)
更改此axios.post('/foobar', vm._data);
:axios.post('/foobar', this.data);
答案 1 :(得分:1)
I'm not seeing anything broken with your code.
也就是说,最好使用this
来引用Vue实例而不是vm
。但是,您仍然需要引用Vue实例的_data
属性来获取data
对象(this.data
将是undefined
)。
但是,当您可以通过data
引用您的this._data
对象时,这就是代码味道。您的Vue实例的数据属性可以直接从this
单独访问。访问整个对象打破了这种范式。
如果您尝试在帖子请求中提交{ someData: 'fooBar' }
,请为其创建数据属性(例如postData
)并通过this.postData
引用它:
var vm = new Vue({
el: '#app',
data: {
postData: { someData: 'fooBar' }
},
methods: {
postEventData: function () {
axios.post('/foobar', this.postData);
}
}
});
您的v-on:click="postEventData"
模板很好。
答案 2 :(得分:0)
古老的问题,但是如果有人被卡住,这对我有用吗
button click事件实际上试图提交表单,因为它包含在form元素中。因此,为了使其调用该方法,我不得不做@click.prevent="myMethod()"
.prevent
是关键。它充当了event.preventDefault()