2021-12-03

定义组件: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

                },

            },

你可能感兴趣的:(2021-12-03)