【问题标题】:Modifying child data from parent vue从父 vue 修改子数据
【发布时间】:2018-11-25 09:27:52
【问题描述】:

我有一个组件,它代表表单中的一个选项,其中的数据代表当前选定的选项。有一个代表完整表单的父组件,带有一个提交按钮和一个重置按钮。我通过将事件从子级发送到父级来跟踪当前在表单中选择了哪些选项(这很重要,因为表单会动态更新) .

我正在尝试设计重置按钮,它会清除表单中的所有字段(将当前选择的选项设置为空字符串)。我需要修改子组件的数据。我应该使用 Vue 实例作为总线吗?这似乎有点矫枉过正。有没有更好的方法来设计这些组件?

【问题讨论】:

  • 您通过从子级向父级发送事件来跟踪子级数据,但是什么样的事件呢?您是否通过v-model 使用双向绑定?

标签: vue.js vue-component


【解决方案1】:

您可以创建一个自定义事件来监听每个表单域上的重置按钮。查看这个here的文档

【讨论】:

【解决方案2】:

我认为您想对传递给子组件的属性使用同步。我用它来加载我的子组件,例如:

 <textbox :content.sync="new_comment" placeholder="Add a comment..."></textbox>

如果您已经从子组件发出,那么对 new_comment 的更改将自动传递。

【讨论】:

    【解决方案3】:

    你可以找到很多方法来做到这一点here

    对我来说,在玩了很多道具之后,我发现最好和最安全的方法是使用 this.$refs。

    即使您有多个具有相同引用名称的子组件,您也可以使用 forEach 遍历每个子组件。

    【讨论】:

      【解决方案4】:

      只需在子级中放置一个方法,也许是 Clear,然后从父级调用它。您在父级中使用 $refs 来访问子级。

      【讨论】:

      • 我查看了 refs,但它似乎不是很动态。孩子的数量不断更新,似乎很难跟踪 ref。
      • 你可以遍历所有的 $refs 并在每一个上调用 Clear 。将空白函数放在不做任何事情的函数中。
      • 这很好用,谢谢。如果您给某些孩子一个特定的 ref 标签(例如,标记所有表单选项'form-option'),您可以使用 this.$refs.form-option 仅迭代来自父级的那些孩子,这应该是所有的数组孩子们
      • 我不知道您可以使用相同的名称,但效果很好。很高兴能帮上忙。
      • 添加示例或至少添加示例链接
      猜你喜欢
      • 2021-03-08
      • 1970-01-01
      • 2018-04-02
      • 2019-04-04
      • 1970-01-01
      • 2021-01-27
      • 2021-06-11
      • 2015-04-15
      相关资源
      最近更新 更多