javascript - Vue.js:将 props 传递给数据以在 v-model 中使用

标签 javascript vue.js

我一直在尝试将属性传递给这样的数据,正如我在另一篇文章中看到的:

子组件:

props: {
  idInput:   { type: String, required: false },
  nameInput: { type: String, required: false },
},
data() {
  return {
    id: this.idInput,
    name: this.nameInput,
  }
}

所以我可以在这里使用它:

<t-input v-model="name" type="text" />

父组件:

data() { return { game: {} } },
beforeCreated() { this.game = { name: "myName", id: "myID" }
<ChildComponent :name-input="game.name" :id-input="game.id" />

问题是“name”似乎未定义,而如果我做同样的事情但将“name”更改为“nameInput”它可以工作,但我收到 Vue 错误告诉我不要使用这样的 Prop 。有什么想法吗?

最佳答案

这是我创建的一个功能示例来演示此案例:

const comp = Vue.component('comp', { 
  template: '#myComp',
  props: {
    idInput:   { type: String, required: false },
    nameInput: { type: String, required: false },
  },
  data() {
    return {
      id: this.idInput,
      name: this.nameInput,
    }
  }
});

new Vue({
  el: "#myApp",
  data () {
    return {
      game: {}
    }
  },
  created() {
    this.game = { name: 'myName', id: 'myID' };
  },
  components: { comp }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="myApp">
  <comp :name-input="game.name" :id-input="game.id" />
  {{game}}
</div>

<template id="myComp">
  <div>
    {{idInput}}
    <br>
    <input v-model="name" type="text" />
  </div>
</template>

编辑: 检查代码后,我认为问题在于您在 beforeCreated 的父组件的 data 中设置了 game 属性。将其设置为created

编辑 OP找到了另一种方法来做到这一点。不要逐一传递 props,只需向对象传递 1 个 prop,并在 v-model 上使用其属性。

关于javascript - Vue.js:将 props 传递给数据以在 v-model 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65269484/

相关文章:

vue.js - Vue CLI - vue 添加 pwa 导致 TypeError : Cannot read properties of undefined (reading 'tapAsync' ) error

vue.js - Vuetify 在 v-data-table 中显示图标

javascript - 在 VueJS 中使用 POST 请求提交表单

javascript - Jquery 验证插件 |重置表格不起作用

javascript - React 中默认 <option> 的使用需要选择元素

javascript - Vue.js - 当 'copying it' 到另一个数据属性时不要绑定(bind)对象

javascript - 如何正确使用 v-bind (vue.js)

javascript - 查找第 n 个字符后的上一个 <p>?

javascript - 如何在 Chrome 扩展的内容脚本中导入 ES6 模块

javascript - 设置边界等于overlayImage谷歌地图