该组件的应用需要用到脚手架。

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>
原文:https://www.cnblogs.com/shuicai/p/14924827.html