简体   繁体   English

在按键上更新来自子 Vue.js 的父数据

[英]On key press update parent data from child Vue.js

I have an input in a child component and when the user starts typing in the input it updates the data in the parent component, or should.我在子组件中有一个输入,当用户开始输入输入时,它会更新父组件中的数据,或者应该更新。 This is my code, I can post other parts if useful.这是我的代码,如果有用,我可以发布其他部分。

Child孩子

<input
  :keyup="updateFilters(filters[data.field.key])"
  :placeholder="data.label"
/>

methods: {
  updateFilters(value) {
    this.$emit("input", value);
  }
}

Parent家长

 data() {
    return {
      filters: {
        name: "",
        age: "",
        address: "",
      },
    };
  },

You can change the parent from child component the same way you do emiting other events like onchange, onkeyup, onkeydown etc.您可以像发出其他事件(如 onchange、onkeyup、onkeydown 等)一样从子组件更改父组件。

Vue.component('parent', {
    data() {
    return {
      parentValue: ''
    };
  },

  template: `
    <div>
      <label>Parent state value:</label>
      {{parentValue}}
      <br/><br/>
      <label>input is the child component:</label>
      <br/>
      <child @fromChild="fromChild"></child>
    </div>
  `,

  methods: {
    fromChild(value) {
        this.parentValue = value
      console.log(value) // someValue
    }
  }
})

Vue.component('child', {  
    template: `
    <input 
        v-on:keyup="updateParent($event.target.value)" 
      placeholder="type something"
    />
  `,

  methods: {
    updateParent(value) {
        console.log(value)
      this.$emit("fromChild", value);
    }
    },
})

new Vue({
  el: "#app",
  data: {
    label: 'in Vue'
  },
  methods: {
    toggle: function(todo) {
        todo.done = !todo.done
    }
  }
})

I've prepared a working example here .我在这里准备了一个工作示例。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM