vue 组件传值的问题
题目描述
在按照视频教程学习vue的组件通讯时,实现如下效果:
点击第一行文字,所有文字都变成dell,
点击第二行文字,所有文字都变成lenov
但是我做出来的效果,第一行点击变成dell之后,再点击第二行就没反映了
附代码:
<div id="app">
<child content="dell"></child>
<child content="lenov"></child>
</div>
</body>
<script src="../lib/vue.js"></script>
<script>
Vue.prototype.bus=new Vue();
Vue.component('child',{
data:function() {
return {
cont:this.content
}
},
props: {
content:{
type:String,
// default:"it is default"
}
},
template:"<div @click='handleClick'>{{cont}}</div>",
methods: {
handleClick:function(){
this.bus.$emit('change',this.cont);
}
},
mounted: function() {
var that=this;
this.bus.$on('change',function(msg){
that.cont=msg
})
}
})
var vm=new Vue({
el:"#app",
})
</script>
大家看一下我的代码有什么问题,需要怎么修改
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
点击第一行 触发事件
handleClick
然后通知
change
事件 传入参数cont
值dell
你定义的两个
change
事件被触发 改变当前组件的cont
值为dell
这时候你不管点击哪一个因为
cont
值都为dell
change
是触发了但是还是自身的值 所以不会改变将传入的值改为
prop
的content
因为这个值你从一开始传入就没有改变过