vue(2)组件

111 阅读1分钟
  1. 构造组件
    一般在body中通过template模板构造,并为template模板起一个id,在实例化对象中接收id
<div id="app">
    <mycom title="title1111"></mycom>------->可以在挂载函数中通过属性定义的方式为组件传值
    <p>{{msg}}</p>
  </div>

<template id="temp">
    <div>
      组件 {{ title }}
      <p>{{msg}}</p>
    </div>
  </template>
  
  let vm = new Vue({
      el: '#app',
      components: {
        'mycom': {
          template: '#temp',
          props: ['title'],      ---------->props里的属性在子组件里不允许修改
          data () {              ---------->组件中的data需要通过return的方式返回值
            return {
              msg: '123456789'
            }
          }
        }
      },
    })
  1. 组件调用挂载函数中的方法
<div id="app">
    <mycom @close="hide"></mycom>         --------->被调用的方法
  </div>

<template id="temp">
    <div>
        <button @click="closeit">子组件按钮</button>--------->为子组件定义方法
    </div>
  </template>
  
  let vm = new Vue({
      el: '#app',
      components: {
        'mycom': {
          template: '#temp',
          methods: {
            closeit(){
                this.$emit('close')        --------->通过this.$emit('被调用的方法') 调用方法
            }
          }
        }
      },
      methods: {
        hide(){
            this.islogin=false
            this.isregister=false
        }
      }
    })
  1. 插槽
 <div id="app">
    <my-com>
      <div slot="slot">
            <p>
                用户名1<input type="text">
            </p>
            <p>
                密码1<input type="text">
            </p>
       </div>
    </my-com>
    
    <my-com>
      <div slot="slot">
            <p>
                用户名2<input type="text">
            </p>
            <p>
                密码2<input type="text">
            </p>
       </div>
    </my-com>
  </div>
  
   <template id="temp">
            <header> </header>
           
            <!-- 插槽占位 -->
            <slot name="slot1"></slot>

            <button></button>
    </template>