定义组件:Component(局部组件,在Vue实例里面设置好。)
每一个组件都是一个小新的Vue实例,除了不能设置el选项,其他选项都有
如果属性名有特殊符,需要加单引号,同时,这里面要是写data,这里面的data不能是一个对象:
data:{
}
而是一个方法:
data:function(){
return{
}
} 写下一个方法后,然后再返回一个方法。
格式一般长这样子:
//定义组件===>局部组件
components: {
//每一个组件都一个小型Vue实例,除了不能再里面设置el,其他都可以
'b-box': {
//使用template选项,定义组件的模板,注意:模板中必须包含一个根标签
template: `
{{title}}
{{content}}
//定义组件的属性
props:['title','content']
}
}
其中,props这个定义组件的属性里面还有两个方式:1、定义数组;2、定义对象。而且Props可以传对象,可以再里面加一些限制要求。
但请注意,props这个玩意儿啊,它只是只读,并不能进行修改,否则会报错。当然,不排除一些憨憨执意要修改,此时就要这么做———— 先拿一根棒子揍TA一顿,搞错了,搞错了,应该这么做:
先中转一下子,因为props是接受属性的玩意儿。所以,要设置一个data(定义数据):
data(){
return{
//将props接收到的数据,中转给myCount
myCount:this.count
}
}
翻译一下这一串代码的意思(我尽量写的我这脑子能理解的样子嗷)
将props接受到的count(这里的count是为了要修改数字的设定的名字)数据转给一个自己定下名字的玩意儿(也就是myCount),然后在模板里面将有关count的代码改成myCount,
这下子就可以修改了,其中的原理,我也不知道。反正我就知道一点,这样子写就可以将想修改的地方进行修改了。你count改不了的玩意儿,交给一个自己设定好的东西就可以修改了。
这样子:
但是这样子写,只是组件在自嗨,页面不会嗨,所以需要一个监听事件,在数据在自嗨的时候,页面也要跟嗨起来(怎么就这么麻烦?)
watch:{
myCount(val){
//触发一个自定义时间,事件名称是yt,将count的最新值作为事件传出去
//自定义使用名称不能有大写(所以,为了简便,我就写了yt这个玩意儿。)
this.$emit('yt',val)
}
其中,'yt' 这个东西的名字啊,是可以自己定的,叫啥都行(不过还请命名的好一点,免得到后面脑子混乱的时候给忘了。)
然后就是在页面(记住,不是模板,是页面,也就是HTML标签里面)写下这个玩意儿
@yt="yt(index,$event)
其中,index是下标,$event是回发的事件对象
Index指的是:
也就是衣服、裤子、长袜的顺序。
然后再更新数据:
methods: {
yt(index,e){
//更新数据
this.list[index].count=e
console.log(index,e);
}
其中的e是更改的数量
注册全局组件属性和模板:
Vue.component('b-star', {
//模板
template: `
//定义组件属性
props: {
title: {
type: String,
required: false
},
value: {
type: Number,
default: 0
},
},