vuejs,如何在父组件调用子组件的方法,即在父组件点击按钮,弹出一个模态框,然后进行ajax请求,ajax请求方法写在子组件模态框中。求指导啊
父组件的点击方法
子组件的ajax请求
他俩之间的通信不会弄了。。
vuejs,如何在父组件调用子组件的方法,即在父组件点击按钮,弹出一个模态框,然后进行ajax请求,ajax请求方法写在子组件模态框中。求指导啊
父组件的点击方法
子组件的ajax请求
他俩之间的通信不会弄了。。
其实不用去注册事件,有ref,就可以直接拿到子组件的所有的方法(vue2):
child1.vue
<template>
<div>
child1
</div>
</template>
<script>
export default {
name: "child1",
props: "msg",
methods: {
handleParentClick(e) {
console.info(e)
}
}
}
</script>
parent.vue
<template>
<div>
<button v-on:click="clickParent">点击</button>
<child1 ref="child1"></child1>
</div>
</template>
<script>
import Child1 from './child1';
export default {
name: "parent",
components: {
child1: Child1
},
methods: {
clickParent() {
// this.$refs.child1.$emit('click-child', "high");
this.$refs.child1.handleParentClick("ssss");
}
}
}
</script>
方法1: 用prop
父:
<comp :method="method"></comp>
{
methods: {
method: function(){
....
}
}
}
子:
<div @click="click">点击</div>
{
props: ['method'],
methods: {
click: function(){
this.method()
}
}
}
方法2: 参考官方 http://cn.vuejs.org/api/#vm-dispatch
@leftstick 提拱的方法可行!
var child = {
created: function(){
this.$on('click-child', function(){
console.log('send ajax here');
});
},
template: '<div></div>'
};
var app = {
template: '<div><button v-on:click="clickParent">点击</button><child v-ref:child></child><div>',
methods: {
clickParent: function(){
this.$refs.child.$emit('click-child');
}
},
components: {
child: child
}
};
new Vue({el: 'body', components: {app: app}});
6 回答2.9k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
2 回答2k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
4 回答2.6k 阅读
2 回答977 阅读✓ 已解决
可以用事件方式:
$emit
和$on
在父组件里通过
$refs
拿到子组件,然后调用$emit
方法通知子组件在子组件里通过
$on
方法监听上一步广播的事件名,然后在callback
里发你的ajax
就好了当然,如果你熟悉vuex,用这个也很好!
补充:
为了方便理解,给你一个简单的示意demo吧: plunker