• vue2.0实现一个模态弹框,内容自定义(使用slot)


    定义模态框:合理使用插槽

    model.vue

    <!-- 模态弹窗 -->
    <template>
        <div class="self-modal" v-show='showModal'  @click="cancelClick" v-bind:style="styleObj" @touchmove.stop.prevent>
          <!-- 自定义内容 -->
          <slot></slot>
        </div>
    </template>
    <script>
    export default {
      name: 'selfModal',
      data () {
        return {
          showModal: false
        }
      },
      props: {
        styleObj: { // 用于承接样式类
          type: Object,
          default: function () {
            return {
              position: 'fixed',
              bottom: 0,
              top: 0,
              left: 0,
               '100%',
              background: 'rgba(113,111,111,0.5)'
            }
          }
        }
      },
      methods: {
        // 确定
        sureClick () {
          this.showModal = true
          return new Promise(function (resolve) {
            resolve('sure')
          }, function (reject) {})
        },
        // 取消
        cancelClick () {
          this.showModal = false
          return new Promise(function (resolve) {
            resolve('cancel')
          }, function (reject) {})
        }
      }
    }
    </script>
    <style scoped lang='scss'>
    .self-modal{
      z-index: 3000;
    }
    </style>
    

    正确的使用方式:

    import selfModal from '@/base/selfModal/modal'

    <selfModal ref="incomeSelect" :styleObj="styleObj">
    <div class="career-content" @click.prevent.stop>
    <div class="mark-title">
    请选择年收入
    </div>
    <div class="mark-wrapper" @click.stop="getIncome('1')">
    <p class="nav-mark no-sub-mark">小于10万</p>
    </div>
    <div class="mark-wrapper" @click.stop="getIncome('2')">
    <p class="nav-mark no-sub-mark">10万-30万</p>
    </div>
    <div class="mark-wrapper " @click.stop="getIncome('3')">
    <p class="nav-mark no-sub-mark">大于30万</p>
    </div>
    <div class="mark-wrapper no-border-bottom">
    <p class="btn-mark" @click.stop="getIncome()">取消</p>
    </div>
    </div>
    </selfModal>
     
    data () {
    styleObj: {
    position: 'fixed',
    bottom: 0,
    top: 0,
    left: 0,
    background: 'rgba(113, 111, 111, 0.5)',
    '100%'
    },
    }
    methods () {
      
    selectIncome () {
      this.$refs.incomeSelect.showModal = true
    }

    使用插槽,实现弹框内容自定义,样式自定义,  

  • 相关阅读:
    第一次用NUnitAsp
    IT能够解决所有的商业问题吗?
    在这种东西里面,你会自在吗?
    看了段.net show之后的感想
    获取当前数据库中所有表的记录数
    对瀑布模型各阶段的解释
    Linux内核中的slab/slob/slub 在搞晕前先记下来
    分布式事务AT、TCC、Saga、XA 模式分析对比
    读懂Windows的“虚拟内存”为你量身定制
    示范NTFS 卷上的硬链接
  • 原文地址:https://www.cnblogs.com/evaling/p/9265055.html
Copyright © 2020-2023  润新知