Vue实战:简易布局Dome

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/b954960630/article/details/87448047

一、show

1、介绍

在这里插入图片描述

  • 组件:App、MyHeader、Mybody、MyNav、MyMain、MyFooter(App是所有的父组件,Mybody是 MyNav和MyMain 的父组件)

  • 数据data:[{name: ‘bty’, age: 12}, {name: ‘张三’, age: 13}, {name: ‘oppen’, age: 14}]

  • 传值:将全局数据data传给App组件、App再传给MyBody组件、MyBody再传给MyNav组件,并在其中把传来的数据展示出来。

2、展示

在这里插入图片描述
点击显示数据后,导航栏显示数据:
在这里插入图片描述

二、code

dome.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>test</title>
    <script type="text/javascript" src='./src/js/vue.js'></script>
    <link rel="stylesheet" type="text/css" href="./src/css/index.css">
  </head>
  <body>
        
  <div id="app"></div>
  <script type="text/javascript" src='./src/js/index.js'></script>
   
  </body>
</html>
./src/js/index.js
let MyHeader = {
	template: `<div id="header">我是头部</div>`,
};

let MyNav = {
	template: 
		`<div id="nav">
			我是导航栏<br/>
			<button @click="changeShow">点我显示数据</button>
			<ul v-if="dataShow">
				<li v-for="(item, index) in data">{{index}}、{{item.name}} :{{item.age}}</li>
			</ul>
		</div>`,
	data() {
		return {dataShow: false};
	},
	methods: {
		changeShow() {
			this.dataShow = !this.dataShow;
		}
	},
	props: ['data'],
};

let MyMain = {
	template: `<div id="main">我是正文</div>`,
};

let MyBody = {
	components: {
		'my-nav': MyNav,
		'my-main': MyMain,
	},
	template: 
		`<div id="body">
			<my-nav :data="data"></my-nav>
			<my-main></my-main>
		</div>`,
	props: ['data'],
};

let MyFooter = {
	template: `<div id="footer">我是底部</div>`,
};

let App = {
	components: {
		'my-header': MyHeader,
		'my-body': MyBody,
		'my-footer': MyFooter,
	},
	template: 
		`<div>
			<my-header></my-header>
			<my-body :data="data"></my-body>
			<my-footer></my-footer>
		</div>`,
	props: ['data'],
};

let vm = new Vue({
	el: document.getElementById('app'),
	components: {
		'app': App,
	},
	template: '<app :data="data"/>',
	data() {
		return {
			data: [{name: 'bty', age: 12}, {name: '张三', age: 13}, {name: 'oppen', age: 14}]
		};
	}
});
./src/css/index.css
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
#header,
#body,
#footer {
	width: 100%;
	border: 1px solid #000;
}
#header,
#body,
#nav,
#footer {
	float: left;
}
#header {
	height: 60px;
}
#body {
	margin: 10px 0;
	height: 400px;
}
#nav,
#main {
	display: inline-block;
	height: 100%;
}
#nav {
	width: 25%;
	border: 2px solid blue;
}
#main {
	width: 70%;
	float: right;
	border: 2px solid red;
}
#footer {
	height: 50px;
}

猜你喜欢

转载自blog.csdn.net/b954960630/article/details/87448047
今日推荐