一、组件间通信(父组件    -->  子组件)
步骤:
①父组件在调用子组件 传值
<child-component myValue="123"> </child-component>
②在子组件中 获取父组件传来的值
Vue.component('child-component',{
  props:['myValue'],
  template:''
})

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>父传子</title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="container">
<p>{{msg}}</p>
<parent-component></parent-component>
</div>
<script>
// 在vue中一切都是组件
//父传子
Vue.component("parent-component",{
data:function(){
return {
gift:"传家宝"
}
},
template:`
<div>
<h1>这是父组件</h1>
<hr>
<child-component v-bind:myValue="gift"></child-component>
</div>
`
})
Vue.component("child-component",{
props:["myValue"],
template:`
<div>
<h1>这是子组件</h1>
<p>{{"父传递的值:"+myValue}}</p>
</div>
`
})
new Vue({
el:"#container",
data:{
msg:"Hello VueJs"
}
})
</script>
</body>
</html>
myValue是属性名,必须都一样……拿data中的用v-bind:或者:
props是property属性,是个数组
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>父子之间通信练习</title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="container">
<p>{{msg}}</p>
<my-login></my-login>
</div>
<script>
/*
登录窗口
创建4个组件,分别是my-label my-input my-button my-login(复合组件)
*/
Vue.component("my-label",{
props:["myLabel"],
template:`
<div>
<label>{{myLabel}}</label>
</div>
`
})
Vue.component("my-input",{
template:`
<div>
<input type="text"/>
</div>
`
})
Vue.component("my-button",{
props:["myButton"],
template:`
<div>
<button>{{myButton}}</button>
</div>
`
})
//复合组件
Vue.component("my-login",{
data:function(){
return {
uname:"用户名",
upwd:"密码",
login:"登录",
register:"注册"
}
},
template:`
<div>
<my-label v-bind:myLabel="uname"></my-label>
<my-input></my-input>
<my-label v-bind:myLabel="upwd"></my-label>
<my-input></my-input>
<my-button v-bind:myButton="login"></my-button>
<my-button v-bind:myButton="register"></my-button>
</div>
`
})
new Vue({
el:"#container",
data:{
msg:"Hello VueJs"
}
})
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<script src="js/vue.js"></script>
<title></title>
</head>
<body> <div id="container">
<my-login></my-login>
</div> <script> Vue.component('my-label',{
props:['labelName'],
template:'<label>{{labelName}}</label>'
})
Vue.component('my-input',{
props:['tips'],
template:'<input type="text" :placeholder="tips"/>'
})
Vue.component('my-button',{
props:['btnName'],
template:'<button>{{btnName}}</button>'
}) Vue.component('my-login',{
template:`
<form>
<my-label labelName="用户名"></my-label>
<my-input tips="请输入用户名"></my-input>
<br/>
<my-label labelName="密码"></my-label>
<my-input tips="请输入密码"></my-input>
<br/>
<my-button btnName="登录"></my-button>
<my-button btnName="注册"></my-button>
</form>
`
}) new Vue({
el: '#container',
data: {
msg: 'Hello Vue'
}
})
</script> </body>
</html>

要拿到data中的数据就要v-bind,否则就不用

最新文章

  1. 将一个实体数据保存到不同的数据表中&lt;EntityFramework6.0&gt;
  2. VIEW SERVER STATE permission was denied on object 'server', database 'master'
  3. leetcode 187. Repeated DNA Sequences 求重复的DNA串 ---------- java
  4. 状态机学习(二)解析INI文件
  5. 如何安装最新版本的memcached
  6. JQ基础练习---图片划过变暗
  7. jquery html标签的链式语法
  8. mysql 写数据操作几次硬盘?
  9. if语句中同时判断多个条件的多种方法
  10. C#中DateTime的缺陷与代替品DateTimeOffset
  11. 学习Acegi应用到实际项目中(9)- 实现FilterInvocationDefinition
  12. Scrum Meeting 6
  13. ETL工具总结
  14. github上打包的样式为什么在预览的时候,出现404
  15. python第四课——运算符
  16. Distributed3:SQL Server 分布式数据库性能测试
  17. SpringBoot与Dubbo整合下篇
  18. php扩展编译流程路
  19. cppjieba分词学习笔记
  20. [javaSE] IO流(管道流)

热门文章

  1. vue创建项目配置脚手架vue-cli环境出错
  2. Linux下安装chrome浏览器
  3. 利用mysql中if函数排序
  4. 求助高手,Nginx配置二级域名跳转 地址栏不变咋处理?
  5. oracle 主键自增并获取自增id
  6. &lt;authentication&gt; 元素
  7. 在国外搭建 Web 服务器 - Linode VPS
  8. Day01_课后练习题
  9. CSS画心形和蛋形
  10. 使用distinct消除重复记录的同时又能选取多个字段值