8组件通信-父组件向子组件传递数据-数组

三个注意点

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="app">
			<cpn :cmovies='movies' :cmessage='message'></cpn>
		</div>
		
		<template id="cpn">
			
			
			<!-- 1.错误点,必须在一个大div包裹里  -->
			<!-- <div>
				{{cmovies}}
			</div>
			<h2>{{cmessage}}</h2> -->
			
			
			<!-- 2.错误点:两个div 只显示第一个div -->
			
			<!-- <div>
				<ul>
					<li v-for="item in cmovies">{{item}}</li>
				</ul>
				<h2>{{cmessage}}</h2>
			</div>
			
			<div>
				<p>{{cmovies}}</p>
				<h2>{{cmessage}}</h2>
			</div> -->
			
			
			<!-- 可以这样写 -->
			<div>
				<ul>
					<li v-for="item in cmovies">{{item}}</li>
				</ul>
				<h2>{{cmessage}}</h2>
				
				<div>
					<p>{{cmovies}}</p>
					<h2>{{cmessage}}</h2>
				</div>
				
			</div>
			
			
		</template>
		
		
		
		<script src="../../vue.js" type="text/javascript" charset="utf-8"></script>
		
		<script type="text/javascript">
			
			// 父传子 props
			const cpn ={
				template:'#cpn',
				props:['cmovies','cmessage'],
				data() {
					return {}
				},
				methods:{
					
				}
				
			}
			
			
			
			const app=new Vue({
				el:'#app',
				data:{
					message:'你好',
					movies:['1','2','3','4'],
				},
				components:{
					// 'cpn':cpn
					cpn
				}
			})
		</script>
		
	</body>
</html>

  • 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值