javascript - 如何从组件向父组件传递单选按钮选项?

标签 javascript vue.js vue-component

我正在尝试复制 parent-child communication在组件中。这个想法是有一个基于单选按钮的二选一组件,可以重复使用多次:

Vue.component('chooser', {
  template: '<form> <input type="radio" value="hello" v-model="picked"> Hello<br><input type="radio" value="world" v-model="picked"> World<br></form>',
  data: function() {
    return {
      picked: null
    }
  },
  watch: {
    picked: function() {
      this.$emit('picked')
    }
  }
})

var vm = new Vue({
  el: "#root",
  data: {
    first: null,
    second: null
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.3/vue.js"></script>
<div id="root">
  <chooser v-model="first"></chooser>
  Here I want to get choice one: {{first}}
  <chooser v-model="second"></chooser>
  Here I want to get choice two: {{second}}
</div>

我没有将信息从组件返回给父级,为什么?

最佳答案

您没有正确使用$emit函数。要模拟 v-model,您应该发出“input”类型的事件(第一个参数)和相应的值(第二个参数)。

Vue.component('chooser', {
  template: '<form> <input type="radio" value="hello" v-model="picked"> Hello<br><input type="radio" value="world" v-model="picked"> World<br></form>',
  data: function() {
    return {
      picked: null
    }
  },
  watch: {
    picked: function() {
      this.$emit('input', this.picked);
    }
  }
})

var vm = new Vue({
  el: "#root",
  data: {
    first: null,
    second: null
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.3/vue.js"></script>
<div id="root">
  <chooser v-model="first"></chooser>
  Here I want to get choice one: {{first}}
  <chooser v-model="second"></chooser>
  Here I want to get choice two: {{second}}
</div>

关于javascript - 如何从组件向父组件传递单选按钮选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44301418/

相关文章:

javascript - 如何在 vue js 中使用 props 更新子组件的属性?

javascript - vue组件外部的访问方法

vue.js - vue 将字符串渲染为已存在的组件

laravel - [Vue警告] : Error compiling template: invalid expression: Unexpected token >

javascript - 为什么这段代码不会在浏览器中提示一次?

javascript - 在使用 @loadable/component 渲染之前等待 Promise

spring-boot - 在本地开发期间动态更新前端和后端之间的传输层(vue.js、axios 和 spring-boot)?

javascript - 如何使用 CoffeeScript 中的 vue?

javascript - Angular4/Javascript 日期在使用时区的构造函数调用后发生变化

javascript - 在 Ember 时间轴上动态加载/重新加载绑定(bind)数据