描述:项目是用jQuery为框架,是用ajax.load局部加载页面的单页面应用。未局部加载的页面(页面A)就相当于vue的父组件,局部加载的页面(页面B)相当于vue中的子组件,现在就是要将页面B中各个点击事件拼接的数据传递到页面A。
1.vue写法
<div id="app">
<div id="counter-event-example">
<p>{{ total }}</p>
//在调用子组件处创建自定义事件
<button-counter @increment="incrementTotal"></button-counter>
<button-counter @increment="incrementTotal"></button-counter>
</div>
</div>
<script>
Vue.component('button-counter', {
//点击按钮调用incrementHandler方法,就触发自定义事件(increment),便可实现传参
template: '<button @click="incrementHandler">{{ counter }}</button>',
data: function () {
return {
counter: 0
}
},
methods: {
incrementHandler: function () {
this.counter += 1
//触发自定义事件,传递子组件参数
this.$emit('increment','test')
}
},
})
new Vue({
el: '#counter-event-example',
data: {
total: 0
},
methods: {
// 接受子组件传递参数
incrementTotal: function (param) {
console.log(param)
this.total += 1
}
}
})
</script>
2.jQuery写法
首先,在页面A的节点绑定自定义事件,我是绑在html上
$("html").off("chooseTary").on("chooseTary",function (event, param1,param2) {
console.log(param1,param2);
})
然后,在页面B使用trigger,就会触发页面A的自定义方法,从而实现传参
$("html").trigger("chooseTary",["sbbbbbbbb"])
网友评论