#最近新学习vue的开发,开发中遇到一个这样的问题,我这里简单写一个demo为大家说明下,希望能帮助到有一些同学
这里是我重新写的demo,能最直观的看到现象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<div>
<com1 :dataMsg="msg"></com1>
</div>
</div>
<script>
var vm = new Vue({
el:"#app",
data:{
msg:"niubility",
},
methods: {
},
//默认情况下 子组件无法直接拿到vue中的data数据和方法
components:{
com1:{
template:'<h1>这是一个子组件-------data中的msg为{{dataMsg}}</h1>',
//把父组件传递过来的绑定属性在子组件中定义,这里注意很多属性都是带s的 data为function,props为数组
props:['dataMsg']
}
}
})
</script>
</body>
</html>
如上,定义一个子组件想引用vue实例中的data 属性,在做属性绑定的时候使用了驼峰,结果拿不到值,我这个使用的是线上的版本利用vue-devtools 发现props中的dataMsg为undefined,这个时候的改为datamsg就正确了
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<div>
<!-- 这里的属性定义不能用驼峰,要用小写,可能跟vue版本有关系 -->
<com1 :datamsg="msg"></com1>
</div>
</div>
<script>
var vm = new Vue({
el:"#app",
data:{
msg:"niubility",
},
methods: {
},
//默认情况下 子组件无法直接拿到vue中的data数据和方法
components:{
com1:{
template:'<h1>这是一个子组件-------{{datamsg}}</h1>',
//把父组件传递过来的绑定属性在子组件中定义
props:['datamsg']
}
}
})
</script>
</body>
</html>
这里说明vue版本为2.6.11中出现不能使用驼峰 命名父子组件间传递属性,但是之前的版本没测试是否可行