Tzo*_*Noy 27 javascript vue.js vue-component
我有一个帖子列表组件和一个帖子组件.
我传递一个方法来从帖子列表调用post组件,所以当点击一个按钮时,它将被调用.
但是我希望在单击此函数时传递post id
码:
let PostsFeed = Vue.extend({
data: function () {
return {
posts: [....]
}
},
template: `
<div>
<post v-for="post in posts" :clicked="clicked" />
</div>
`,
methods: {
clicked: function(id) {
alert(id);
}
}
}
let Post = Vue.extend({
props: ['clicked'],
data: function () {
return {}
},
template: `
<div>
<button @click="clicked" />
</div>
`
}Run Code Online (Sandbox Code Playgroud)
正如你在Post组件中看到的那样,你有一个点击来运行他从道具中得到的方法,我想在该方法中添加一个变量.
你是怎样做的?
Roy*_*y J 26
通常,click事件处理程序将接收事件作为其第一个参数,但您可以使用它bind来告诉函数对其this第一个参数使用什么:
:clicked="clicked.bind(null, post)
Run Code Online (Sandbox Code Playgroud)
更新的答案:然而,让孩子发出一个事件并让父母处理它可能会更直接(并且更符合Vue标准).
let Post = Vue.extend({
template: `
<div>
<button @click="clicked">Click me</button>
</div>
`,
methods: {
clicked() {
this.$emit('clicked');
}
}
});
let PostsFeed = Vue.extend({
data: function() {
return {
posts: [1, 2, 3]
}
},
template: `
<div>
<post v-for="post in posts" @clicked="clicked(post)" />
</div>
`,
methods: {
clicked(id) {
alert(id);
}
},
components: {
post: Post
}
});
new Vue({
el: 'body',
components: {
'post-feed': PostsFeed
}
});Run Code Online (Sandbox Code Playgroud)
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/1.0.26/vue.min.js"></script>
<post-feed></post-feed>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37211 次 |
| 最近记录: |