我有一个这样的循环:
<div class="jokes" v-for="joke in jokes">
<strong>{{joke.body}}</strong>
<small>{{joke.upvotes}}</small>
<button v-on:click="upvote"><i class="fa fa-arrow-down"></i></button>
<div>
我需要获取joke.id
以便我可以将其发布到后端并增加投票。
方法应该是这样的:
methods: {
upvote: function(e) {
axios.post( this.BASE_URL + "/api/joke/" + this.joke.id + "/upvote", {
token: 'secret',
}).then(function(data){
console.log(data);
});
}
},
我怎样才能做到这一点?
答案 0 :(得分:2)
在v-on:click
事件中传递joke
对象:<button v-on:click="upvote(joke)">
您可能还需要像这样键入循环:
<div class="jokes" v-for="joke in jokes" :key="joke.id">
答案 1 :(得分:2)
点击joke
。
<button v-on:click="upvote(joke)"><i class="fa fa-arrow-down"></i></button>
在方法中使用它。
upvote: function(joke) {
axios.post( this.BASE_URL + "/api/joke/" + joke.id + "/upvote", {
token: 'secret',
}).then(function(data){
console.log(data);
});
}
答案 2 :(得分:2)
v-on
指令的值不仅可以是句柄方法名称,还可以是内联语句。所以你只需要为方法添加一个参数,如下所示。
<div class="jokes" v-for="joke in jokes">
<strong>{{joke.body}}</strong>
<small>{{joke.upvotes}}</small>
<button v-on:click="upvote(joke.id)"><i class="fa fa-arrow-down"></i></button>
<div>
然后该方法可以获得id。
methods: {
upvote: function(id) {
axios.post(this.BASE_URL + "/api/joke/" + id + "/upvote", {
token: 'secret',
}).then(function(data) {
console.log(data);
});
}
},
了解更多信息