Vue学习笔记-组件

1.创建一个组件

Vue.component('component',{

  template:`<div>这是一个组件</div> `,//直接写html,只能有一个根元素,即例子中的div不能有兄弟元素
})

 

2. 组件具有自己独立的作用域,即外部不能访问组件内部的变量,组件内部不能访问外部的变量。

    组件的data必须是函数,方法返回一个对象作为组件的data,看下例:

Vue.component('component',{

  template:`<div>这是一个组件
                  <h1>{{message}}</h1>
                </div> `,

  data(){
    return {
      message:"组件内部data"
   }
} //返回对象

})

  

3,以上创建的都是全局组件,局部组件创建方法如下

Vue.component('component',{

  template:`<div>这是一个组件
                  <h1>{{message}}</h1>
                  <hello></hello> //调用局部组件
                </div> `,

  components: {
     hello: {
          template:`<div>hello</div>`,
     }
 
   },//局部组件只能当前组件中使用。

  data(){
    return {
      message:"组件内部data"
   }
} //返回对象

}) 

 

4.父子组件传递数据

   父传子

/*在父文件中调用子组件,并加上要传递的数据属性如下*/
  //父组件代码
 <hello v-bind:data="todos"></hello>   //hello为子组件,todos为你要传给子组件的数据,使用v-bind为动态绑定。

  //子组件代码
 Vue.component('hello', {
  props: ['data'],
  template: '<h3>{{ todos}}</h3>'
})

需要注意,在子组件中不能重新赋值父组件传递下来的数据,也就是父传子是单向的,这是为了防止子组件无意间更改父组件的状态。
虽然引用类型的数据可以修改,但是不建议使用。

 子传父

 /*子组件代码*/
 在方法中写:
 this.$emit('name',value);   //name事件名称,value数据;

 /*父组件代码*/
 <hello v-on:name="method($event)"> </hello>  
//hello子组件,name自定义事件名称,method父组件处理子组件传来的value数据的方法。



上述是传一个参数,传多个参数该如何处理

 /*子组件代码*/
 在方法中写:
 this.$emit('name',value,value2,value3);   

 /*父组件代码*/
 <hello v-on:name="method(arguments)"> </hello>  
  //可以打印出arguments,查看数据。

  

posted @ 2020-06-11 16:51  Angular踩坑者  阅读(177)  评论(0编辑  收藏  举报