vue组件通信_父向子-配合循环 v-for

vue组件通信_父向子-配合循环

目的: 把数据循环分别传入给组件内显示

数据

list: [
    { id: 1, proname: "超级好吃的棒棒糖", proprice: 18.8, info: '开业大酬宾, 全场8折' },
    { id: 2, proname: "超级好吃的大鸡腿", proprice: 34.2, info: '好吃不腻, 快来买啊' },
    { id: 3, proname: "超级无敌的冰激凌", proprice: 14.2, info: '炎热的夏天, 来个冰激凌了' },
],
<template>
  <div>
      <!--3. 使用组件 -->
<MyproDuct 
v-for="item  in list"
:key="item.id"
:title="item.proname"
:price="item.proprice"
:info="item.info"
></MyproDuct>
  </div>
</template>

<script>
// 1.引入组件
import MyproDuct from './components/MyproDuct.vue'
export default {
    data () {
        return {
    list: [
    { id: 1, proname: "超级好吃的棒棒糖", proprice: 18.8, info: '开业大酬宾, 全场8折' },
    { id: 2, proname: "超级好吃的大鸡腿", proprice: 34.2, info: '好吃不腻, 快来买啊' },
    { id: 3, proname: "超级无敌的冰激凌", proprice: 14.2, info: '炎热的夏天, 来个冰激凌了' },
    ],
        }
    },
    //2. 注册组件
components: {
    MyproDuct:MyproDuct
}
}
</script>

<style>

</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据提供的引用内容,我们可以看出这个问题涉及到组件组件之间的通信。在Vue中,组件可以通过v-model或props向组件传递数据,而组件可以通过$emit向组件发送事件。因此,要实现组件一键获取全部组件的值,可以采用以下步骤: 1. 在组件中使用v-for循环渲染多个组件,并为每个组件绑定一个ref属性。 2. 在组件中,通过$emit发送一个自定义事件,将组件的值传递给组件。 3. 在组件中,监听组件的自定义事件,并将组件的值存储在一个数组中。 4. 当需要获取全部组件的值时,遍历存储组件值的数组,获取每个组件的值。 下面是一个简单的示例代码: 组件: ``` <template> <div> <child-component v-for="(item, index) in items" :key="index" ref="childComponents" @get-value="handleGetValue"></child-component> <button @click="getAllValues">获取全部组件的值</button> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { items: [1, 2, 3], // 组件数量 childValues: [] // 存储组件的值 } }, methods: { handleGetValue(value) { this.childValues.push(value); }, getAllValues() { this.$refs.childComponents.forEach(child => { const value = child.getValue(); this.childValues.push(value); }); console.log(this.childValues); } } } </script> ``` 组件: ``` <template> <div> <input type="text" v-model="value"> <button @click="sendValue">发送值到组件</button> </div> </template> <script> export default { data() { return { value: '' } }, methods: { sendValue() { this.$emit('get-value', this.value); }, getValue() { return this.value; } } } </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Henry_ww

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值