代码之家  ›  专栏  ›  技术社区  ›  YEVY

同级组件Vue JS中的触发器方法

  •  1
  • YEVY  · 技术社区  · 7 年前

    再次需要您的帮助。这是我的情况。VueJS2(vue cli项目)无Vuex。 我有 parent 组成部分 child1 child2 儿童1 是从中获取数据的窗体 儿童2 (这是一张桌子)。在中单击表格行的复选框时 儿童2 ,我们填写表格 儿童1 这是由 event 发射通孔 父母亲 (图2)。 儿童1 有一个按钮和 reset method (见图1)以清除其字段。我的任务是:当我在表格行中“取消选中”复选框时 儿童2 ,表单位于 儿童1 必须清除。如何做到这一点,特别是如何访问 重置方法 在里面 儿童1 从…起 儿童2 并使用 儿童2 大体上 我知道如何在孩子之间传递数据,但我不知道如何从兄弟姐妹那里处理孩子的数据。 请帮忙!提前感谢您!

    Snippet of reset method in child1 enter image description here

    1 回复  |  直到 7 年前
        1
  •  2
  •   samayo    7 年前

    如果我理解正确的话,您有2个子组件,您希望告诉child1从child2组件执行方法(重置),而不传递任何道具。

    在这种情况下,您的选择仅限于使用事件总线。

    检查此示例。当您从中单击按钮时 CompB 它在另一个子组件内执行一个方法: CompA

    var Bus = new Vue()
    
    var compA = {
      data: () => ({ name: 'Primary' }), 
      
      template: `<p> Comp A is: {{name}}</p>`,
      
      methods: {
        reset () {
          this.name = 'RESETED'
        }
      },
      
      created () {
       let self = this;
        Bus.$on('resetA', function (payload) {
          self.reset()
        })
      }
    }
    
    var compB = {
      template: `<p> Comp B <button @click="resetCompA"> Clear A </button> </p>`,
      methods: {
        resetCompA () {
          Bus.$emit('resetA')
        }
      }
    }
    
    new Vue({
      el: '#app',
      components: {
       'comp-a'  : compA, 
       'comp-b' : compB
      }
    })
    <script src="https://unpkg.com/vue@2.5.9/dist/vue.js"></script>
    <div id="app">
      <comp-a></comp-a>
      <comp-b></comp-b>
    </div>