jQuery模拟vue子组件向父组件传值

2020-04-14  本文已影响0人  一个小前端程序员

描述:项目是用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"])
上一篇 下一篇

猜你喜欢

热点阅读