【问题标题】:Vue: How to communicate with a particular child component from parentVue:如何与父级的特定子组件通信
【发布时间】:2019-06-24 13:17:32
【问题描述】:

我想将服务器发送的数据传递给指定的子组件。这就是我将组件添加到父组件的方式:

<my-order v-for="order in orders" :key="order.id" :generalData="order"></my-order>

虽然可以通过key 识别组件,但我不明白如何才能到达特定元素(例如,我想更改由@987654325 识别的特定my-order&lt;span&gt; 中的内容@) 并更改其内容。

Orders
    Order [key=1]
    Order [key=2]
    Order [key=3]

假设Order [key=2] 已在后端更新,我想在客户端反映该更改。所以我想在客户端更新这个特定的Order [key=2]

【问题讨论】:

  • 对我来说听起来像是 XY 问题。你想做什么?你能给我们举个例子吗(最好用最少的代码)?
  • :) 我会更新我的问题

标签: vue.js vue-component


【解决方案1】:

您只需将动态数据放入orders

例如:

服务器 API 返回此 orders json:

[
  {
    "id": 1,
    "value": 100,
    "some_data": null
  },
  {
    "id": 2,
    "value": 50,
    "some_data": "Anything you can think"
  },
  {
    "id": 3,
    "value": 75,
    "some_data": null
  }
]

在您的组件中,您只需使用数据:

<my-order v-for="order in orders" :key="order.id" :generalData="order">
    //Inside the component

    <span v-if="generalData.some_data !== null">{{generalData.some_data}}</span>

    //End Inside Component
</my-order>

这样,每个order 都会得到你唯一的数据,或者如果some_datanull,span 将不会呈现

【讨论】:

  • 谢谢。我是 Vue 和学习的新手...会按照您上面提到的那样尝试。
  • 如果在创建组件后接收到数据会发生什么。正如我在上面的用例中描述的那样。已经创建了组件,我只想将它们与服务器同步。
  • Vue 将渲染新数据,如果 orders 有 6 个,现在有 10 个,Vue 将使用更新的数据更新 DOM。
猜你喜欢
  • 1970-01-01
  • 2016-11-05
  • 2017-11-21
  • 1970-01-01
  • 2020-03-17
  • 2018-05-08
  • 1970-01-01
  • 2021-08-13
  • 2021-03-28
相关资源
最近更新 更多