【问题标题】:Vue.js edit variables in dynamic componentsVue.js 编辑动态组件中的变量
【发布时间】:2018-03-07 21:13:54
【问题描述】:

我想制作一个对象列表。 (列表的)每个元素都由一个子组件可视化。我的目标是创建一个动态列表,我可以在其中编辑元素。

我有一个父组件<contacts-list-form> 有一个联系人数组,并在<contact-element-form> 中动态地显示他们:

<contact-element-form v-for="contact in contacts" :key="contact.id" :contact="contact"></contact-element-form>

contact-element-form 看起来像这样:

<template lang="html">
  <md-card>
    <md-card-header>
      <div class="md-title">Contact</div>
        <md-icon @click="removeMyself">remove</md-icon>
    </md-card-header>
      <md-card-content>
        <md-input-container>
          <md-icon>person</md-icon>
          <label>contactName</label>
          <md-input name="contactName" v-model="contact.name" required />
        </md-input-container>

        <md-input-container>
          <md-icon>email</md-icon>
          <label>contactEmail</label>
          <md-input name="contactEmail" v-model="contact.email" required />
        </md-input-container>

        <md-input-container>
          <md-icon>phone</md-icon>
          <label>contactPhoneNumber</label>
          <md-input name="contactPhoneNumber" v-model="contact.phoneNumber" required />
        </md-input-container>
    </md-card-content>
  </md-card>
</template>

<script>
export default {
  props: ["contact"],
  data() {
    return {
      contact: {},
    }
  },
  methods: {
    removeMyself() {
      console.debug(this.contact.id + ". id will be removed.");
      // it will emits to its parent.
    }
  },
  create() {}
}
</script>

<style lang="css">
</style>

我怎样才能获得每个 &lt;contact-element-form&gt; 的数据是可编辑的,并且父级 (&lt;contacts-list-form&gt;) 会注意到这一点,并将修改发送到服务器。

感谢您的回答,并提前提出建议!

【问题讨论】:

    标签: javascript dynamic vue.js vuejs2 vue-component


    【解决方案1】:

    为了尊重单向数据流,这是实现您正在寻找的东西的一种方式:

    • 父母将道具传给孩子
    • 父注册 v-on:childUpdate="parentUpdate" 事件监听器
    • 当子级发生突变时,子级会发出一个 childUpdate 事件,将新值传递给父级
    • 每当孩子调用 childUpdate 时,父母都会执行 parentUpdate
    • 父母将数据发送到服务器等等
    • 父级更新自己的状态以表示更改
    • 由于数据流过一天,传递给孩子的道具现在会自动更新

    描述的最后一部分很重要:孩子不会进行本地修改,但修改是通过将事件和新值发送给负责更新联系人详细信息的父级和父级来进行的。由于联系人是传递给孩子的道具,孩子的状态会自动更新。

    这里有一个例子https://vuejs.org/v2/guide/components.html#Using-v-on-with-Custom-Events

    另一种方法是使用 v-model,它可以从链接部分下方的文档中找到。

    【讨论】:

    • 谢谢!我要给它一个机会。
    • 有效!再次感谢您的扩展回复。 :)
    猜你喜欢
    • 2023-01-19
    • 1970-01-01
    • 2020-06-29
    • 1970-01-01
    • 2018-04-29
    • 2020-08-08
    • 2018-08-24
    • 2018-03-13
    • 2017-06-14
    相关资源
    最近更新 更多