javascript - Vue : Input Form in a component doesn't return a value

标签 javascript vue.js vuejs2 vue-component

我的“ecedata”组件中有一个带有输入字段的代码:

<template>
    <div class="col-l-4">
        <p style="text-align: center">Data/day (GB)</p>
        <div class="form-input-set" style="background: white">
            <input v-bind:value="dataday" v-on:change="$emit('changedataday', $event.target.value)" type="number" class="form-input">
        </div>
    </div>
</template>

<script>
export default {
    name:"ecedata" ,
    props: {
        dataday:Number,
    },
    data () {
      return {

      }
    },

}
</script>

我正在调用主 app.vue 中的组件:

<template>
    <ecedata v-bind:dataday="dataday" v-on:changedataday="vuedataday" ></ecedata>
</template>

<script>
  import ecedata from '@/components/ece/data/ecedata.vue'

  export default {
    name: 'app',
    components: {
      ecedata,
    },
    data () {
      return {
          dataday:0,
      }
    },
    methods: {
      vuedataday() {
        alert(this.dataday)
      }
    },

  };

</script>

但它不会以 0 以外的形式返回输入值。 错误在哪里?

最佳答案

您刚刚将父组件的值绑定(bind)到子组件。

当您将 vuedataday 方法绑定(bind)为 changedataday 事件的回调时,您几乎就到了,此函数正在接收事件传递的值。

vuedataday(newDataday) {
    this.dataday = newDataday;
}

进行双向绑定(bind)的另一种方法是使用v-model

<ecedata v-model="dataday"></ecedata>

还有 child

<input v-bind:value="dataday" v-on:change="$emit('input', $event.target.value)" type="number" class="form-input">

https://v2.vuejs.org/v2/guide/components.html#Using-v-model-on-Components

关于javascript - Vue : Input Form in a component doesn't return a value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60391537/

相关文章:

javascript - div 上的点击事件不应由其子项触发

javascript - 如何在 Angular 应用程序上收听外部 js 事件?

javascript - 如何避免安装和更新 Vue 组件之间的重复

vue.js - Vue v-for 和 v-if

vue.js - 在不改变原始数据的情况下过滤 Vue 中的对象列表

javascript - 带有输入值的表单操作 onsubmit 重定向

javascript - 在 Play 框架中允许 javascript 调试器(忘记了调试器语句)

javascript - VueJS 从根 Vue 实例中的组件访问数据

amazon-web-services - 如何在 AWS 上运行 Vue JS 应用程序?

vue.js - v-model 和子组件?