Element 소스 -alert 어셈블리 편 읽기 및 분석

8092 단어
alert 구성 요소는 비교적 간단합니다. 기본적으로 다른 스타일을 보여 줍니다. 닫는 이벤트만 있습니다.(질문이 있으면 시정과 토론을 환영하며 작은 역도 구경하러 오세요)

구조

  <transition name="el-alert-fade">
    
    <div
      class="el-alert"
      :class="[typeClass, center ? 'is-center' : '']"
      v-show="visible"
      role="alert"
    >
      
      <i class="el-alert__icon" :class="[ iconClass, isBigIcon ]" v-if="showIcon">i>
      <div class="el-alert__content">
        
        <span class="el-alert__title" :class="[ isBoldTitle ]" v-if="title">{{ title }}span>
        
        <slot>
          <p class="el-alert__description" v-if="description">{{ description }}p>
        slot>
        
        <i class="el-alert__closebtn" :class="{ 'is-customed': closeText !== '', 'el-icon-close': closeText === '' }" v-show="closable" @click="close()">{{closeText}}i>
      div>
    div>
  transition>

props

  props: {
    //     
    title: {
      type: String,
      default: '',
      required: true
    },
    //      
    description: {
      type: String,
      default: ''
    },
    //      computed      type       
    type: {
      type: String,
      default: 'info'
    },
    //       
    closable: {
      type: Boolean,
      default: true
    },
    //          
    closeText: {
      type: String,
      default: ''
    },
    //     icom
    showIcon: Boolean,
    //       
    center: Boolean
  }

computed

  computed: {
    // alert   
    typeClass() {
      return `el-alert--${this.type}`
    },
    // alert icon   
    iconClass() {
      return TYPE_CLASSES_MAP[this.type] || 'el-icon-info'
    },
    //      description(     )               icon
    isBigIcon() {
      return this.description || this.$slots.default ? 'is-big' : ''
    },
    //      description(     )                title
    isBoldTitle() {
      return this.description || this.$slots.default ? 'is-bold' : ''
    }
  }

methods

  methods: {
    //   alert  
    close() {
      // v-show  alert
      this.visible = false
      //       close  
      this.$emit('close')
    }
  }

data

  data() {
    return {
      //       
      visible: true
    }
  }

배우다

  • classclass 귀속 전송문
  • 수 그룹 쓰기
  • 객체 쓰기
  • 더 복잡한 상황은 수조 조합 대상의 쓰기
  • 로 할 수 있다.
  • role : 무장애 웹 애플리케이션, 읽기 소프트웨어가 사용됩니다.W3c 전송문
  • $slots.default: 모든 익명 슬롯에서 나누어 주는 내용을 획득$slots 공식 전송문
  • 좋은 웹페이지 즐겨찾기