该组件的应用需要用到脚手架。
App.vue:
要点:首先需要引入组件 import Homes from ‘./components/Homes‘;//引入组件
然后在 components: {Homes,//注册组件,User} 添加组件
最后 <Homes /> 加入组件
<template> <!--//视图--> <div> 你Vue {{msg}} <p>绑定对象:{{userInfo.username}}---{{userInfo.age}}</p> <p> {{h2}} </p> <p><span v-html="h2"></span></p> </div> <Homes /> <br /> <br /> <keep-alive> <User></User> </keep-alive> </template> <script> import Homes from ‘./components/Homes‘;//引入组件 import User from ‘./components/User‘;//引入组件 export default { data() { return { msg: "Hello Vue", userInfo: { username: "yushuicai", age: "20" }, h2: "<h2>My is one h2 html </h2>" }; }, components: { Homes,//注册组件, User } } </script>
Home.vue
要点:父组件可以往子组件里传值,需要在<Header/>绑定数据,可以单个绑如 :title 也可以将整个组件的数据和方法一起绑定
如:home="this",这样就可以在<Header/>组件里得到home的数据和方法。
<template> <h5>{{title}}</h5> <button @click="getTitle">my is Homes components Title</button> <Header :title="title" :count="num" :userinfo="userInfo" :home="this"></Header> </template> <script> import Header from ‘./Header‘; export default { data() { return { title: "my is Homes components Title", num: 10, userInfo: { username: "zhang san", age:20 } } }, methods: { getTitle() { alert(this.title) } }, components: { Header } } </script>
Header.vue
要点:在<home/>组件里给<Header/>绑定的数据,需要通过props来得到数据,然后显示出来。
<template> <header> my is a top components <br /> <h1>{{title}}</h1> <br /> <br /> {{count}} <br /> <br /> {{userinfo.username}} <br /> <br /> {{home.title}}可以接受Home组件里的所有数据和方法 </header> </template> <script> export default { props: ["title", "count", "userinfo","home"]//接受Home组件传的值,还可以对数据进行校验 } </script>
User.Vue
注意: @click="currentIndex=index", <span v-html="contents"></span> 这个绑定的是计算属性。
<template> 我是一个用户组件 <ul> <li v-for="(item,index) in list " :key="index"> {{index}}--{{item}} <br /> </li> </ul> <div id="app" class="tab_info"> <ul class="tab_header"> <li class="tab_li" v-for="(item,index) in posts" :key="index" @click="currentIndex=index"> {{item.title}} </li> </ul> <div class="tab_content"> <span v-html="content"></span> </div> </div> </template> <script> export default { data() { return { currentIndex: 0, list: [], posts: [ { id: 1, title: ‘Nodejs Text‘, content: ‘<p>Teachers Nodejs 的教程</P>‘ }, { id: 2, title: ‘Golang Text‘, content: ‘<p>Teachers Golang 的教程</P>‘ }, { id: 3, title: ‘Ionic5.x Text‘, content: ‘<p>Teachers Ionic5 的教程</P>‘ } ] } }, mounted() { for (var i = 0; i < 10; i++) { this.list.push(‘my is ${i} top‘) } }, computed:{ content() { return this.posts[this.currentIndex].content; } } } </script>