标签:return cdn 技术分享 .net http 完整 div one inf
单向数据流:
数据从父级组件传递给子组件,只能单向绑定。
子组件内部不能直接修改从父级传递过来的数据。
解决方法: 可以使用data将父组件传递过来的数据拷贝一份存放起来,再修改拷贝的数据就可以了
//用data来解决不能修改父组件传递的数据的问题,
// 我们新增一个number保存父组件传递过来的数据,这样就可以修改数据的值了
data:function(){
return {
number: this.count
}
},
数据就可以修改了:
methods:{
handleclick:function() {
this.number=this.number+2;
this.$emit(‘change‘,2);//子组件向父组将传递参数,触发change事件
}
}
我们使用$emit触发chang方法,在父组件的模版中监听chang方法,最后在Vue实例中调用
(1)
this.$emit(‘change‘,2);//子组件向父组将传递参数,触发change事件
(2)
<counter :count="1" @change="handleIncreae"></counter>
(3)
var vm=new Vue({
el:‘#shuju‘,
data:{
total:3
},
components:{
counter:counter
},
methods:{
handleIncreae:function(step) {
this.total+=step;
}
}
})
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>父子组件传值</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
</head>
<body>
<div id="shuju" >
<counter :count="2" @change="handleIncreae"></counter>
<counter :count="1" @change="handleIncreae"></counter>
<div>{{total}}</div>
</div>
<script>
var counter={
props:[‘count‘],
//用data来解决不能修改父组件传递的数据的问题,
// 我们新增一个number保存父组件传递过来的数据,这样就可以修改数据的值了
data:function(){
return {
number: this.count
}
},
template:‘<div @click="handleclick">{{number}}</div>‘,
methods:{
handleclick:function() {
this.number=this.number+2;
this.$emit(‘change‘,2);//子组件向父组将传递参数,触发change事件
}
}
};
var vm=new Vue({
el:‘#shuju‘,
data:{
total:3
},
components:{
counter:counter
},
methods:{
handleIncreae:function(step) {
this.total+=step;
}
}
})
</script>
</body>
</html>
效果:

标签:return cdn 技术分享 .net http 完整 div one inf
原文地址:https://www.cnblogs.com/guangzhou11/p/9043257.html