篮球外围下注_篮球投注导航_[所有网址]

篮球外围下注_篮球投注导航_[所有网址]是该公司为打造信誉第一,2014最新体验金,篮球外围下注_篮球投注导航_[所有网址]这里的所有老虎机游戏及真人百家乐游戏都具有欧洲风格,致力成为最具传播力和互动性的娱乐城网站。

Vue中的slot使用插槽分发内容的方法

2019-08-01 13:53 来源:未知

最近在使用element-ui框架,用到了Dialog对话框组件,大致实现的效果,跟我之前自己在移动端项目里面弄的一个弹窗组件差不太多。然后就想着把这种弹窗组件的实现方式与大家分享一下,下面本文会带着大家手摸手实现一个弹窗组件。

首先呢,我们建一个空的文件夹,取名vue组件2。
建好了没?
下一步,很重要!命令行,先进入已经建好的文件夹vue组件2,然后敲命令。请复制:vue init webpack vuetest
这里vue官网写的也很清楚:

本文题材来自:

本文主要内容会涉及到弹窗遮罩的实现, slot 插槽的使用方式, props 、 $emit 传参,具体组件代码也传上去了。如果喜欢的话可以点波赞/关注,支持一下,希望大家看完本文可以有所收获。

美洲杯竞猜网址 1

<slot></slot>标签,简单来说就是占位符,它会帮你占好位置,等你需要的时候直接将html传入,它会帮你显示出来。

组件最后实现的效果

下面再附上一张我安装成功的结果图:

也有人说:props可以将数据从父组件传入子组件,slot可以将html从父组件传入子组件。那么如何实现呢?

美洲杯竞猜网址 2美洲杯竞猜网址, 

美洲杯竞猜网址 3

单个插槽:

实现步骤

根据黄色命令提示依次执行,很简单的。静静等待以小会,成功的小伙伴会看到2个结果。1、命令行出现一个成功提示,并给出一个网址,把这个网址放到浏览器打开就行了,如图:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <script type="text/javascript" src="vue.min.js"></script>
  </head>
  <body>
    <div id="app">
      <h1>我是父组件的标题</h1>
      <my-component>
        <p>这是一些初始内容</p>
        <p>这是更多的初始内容</p>
      </my-component>
    </div>
    <script type="text/javascript">
      Vue.component('my-component', {
       // 有效,因为是在正确的作用域内
       template: '<div>
              <h2>我是子组件的标题</h2>
              <slot>只有在没有要分发的内容时才会显示。</slot>
            </div>',
       data: function () {
        return {

        }
       }
      });
      new Vue({
        el:'#app',
        data:{
          msg:'你好啊'
        }
      })

    </script>
  </body>
</html>
  1. 先搭建组件的html和css样式,遮罩层和内容层。
  2. 定制弹窗内容:弹窗组件通过 slot 插槽接受从父组件那里传过来弹窗内容。
  3. 定制弹窗样式:弹窗组件通过 props 接收从父组件传过来的弹窗宽度,上下左右的位置。
  4. 组件开关:通过父组件传进来的 props 控制组件的显示与隐藏,子组件关闭时通过事件 $emit 触发父组件改变值。

美洲杯竞猜网址 4

组件中的模板中写入slot标签,在父级调用子组件的时候传入html即可。

1.搭建组件的html和css样式。

2、新建的vue组件2文件夹出现了一大堆东西,嗯,到了这一步就可以正式的开始我们的组件小笔记了。

具名插槽:

html结构:一层遮罩层,一层内容层,内容层里面又有一个头部title和主体内容和一个关闭按钮。

美洲杯竞猜网址 5

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <script type="text/javascript" src="vue.min.js"></script>
  </head>
  <body>
    <div id="app">
      <my-component>
         <h1 slot="header">这里可能是一个页面标题</h1>

         <p>主要内容的一个段落。</p>
         <p>另一个主要段落。</p>

         <p slot="footer">这里有一些联系信息</p>
      </my-component>
    </div>
    <script type="text/javascript">
      Vue.component('my-component', {
       // 有效,因为是在正确的作用域内
       template: '<div class="container">
             <header>
              <slot name="header"></slot>
             </header>
              <main>
              <slot></slot>
             </main>
             <footer>
              <slot name="footer"></slot>
             </footer>
            </div>',
       data: function () {
        return {

        }
       }
      });
      new Vue({
        el:'#app',
        data:{
          msg:'你好啊'
        }
      })

    </script>
  </body>
</html>

下面是组件中的html结构,里面有一些后面才要加进去的东西,如果看不懂的话可以先跳过,

开发之前,还得安装开发版本,进入命令进入vuetest文件,敲命令,复制:,这个命令vue官网也是有的,不知道的也不用担心,因为我依然会附上一张图:

具名插槽,顾名思义当有多个slot标签时,你需要给他们起个自己的名字,在父组件调用时需要slot="内部的对应名字",当存在没有命名的slot标签时,父级组件传入的默认html代码将全部输出在无名的slot标签中。

<template>
 <div class="dialog">
  <!--外层的遮罩 点击事件用来关闭弹窗,isShow控制弹窗显示 隐藏的props-->
  <div class="dialog-cover back" v-if="isShow" @click="closeMyself"></div>
  <!-- transition 这里可以加一些简单的动画效果 -->
  <transition name="drop">
   <!--style 通过props 控制内容的样式 -->
  <div class="dialog-content" :style="{top:topDistance '%',width:widNum '%',left:leftSite '%'}" v-if="isShow">
   <div class="dialog_head back">
    <!--弹窗头部 title-->
    <slot name="header">提示信息</slot>
   </div>
   <div class="dialog_main" :style="{paddingTop:pdt 'px',paddingBottom:pdb 'px'}">
   <!--弹窗的内容-->
   <slot name="main">弹窗内容</slot>
   </div>
   <!--弹窗关闭按钮-->
   <div class="foot_close" @click="closeMyself">
    <div class="close_img back"></div>
   </div>
  </div>
 </transition>
 </div>
</template>

美洲杯竞猜网址 6

作用域插槽

下面是组件中的主要的css样式,里面都做了充分的注释,主要通过 z-index 和 background 达到遮罩的效果,具体内容的css可以根据自己的需求来设置。

又是两个结果:1、命令行,看图:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <script type="text/javascript" src="vue.min.js"></script>
  </head>
  <body>
    <div id="app">
       <!-- 在父级中,具有特殊特性 slot-scope 的 <template> 元素必须存在,表示它是作用域插槽的模板。slot-scope 的值将被用作一个临时变量名,此变量接收从子组件传递过来的 prop 对象: -->
       <child>
        <template scope="props">
         hello from parent<br>
         {{ props.text }}
        </template>
      </child>
    </div>
    <script type="text/javascript">
      // 在子组件中,只需将数据传递到插槽,就像你将 prop 传递给组件一样:
      Vue.component('child',{
        template:'<ul>'  
              '<slot text="hello from child"></slot>'  
             '</ul>',
        data:function(){
         return {

         }
        },
      });
      new Vue({
        el:'#app',
        data:{
          msg:'你好啊'
        }
      })

    </script>
  </body>
</html>
<style lang="scss" scoped>
 // 最外层 设置position定位 
 .dialog {
 position: relative;
 color: #2e2c2d;
 font-size: 16px;
 }
 // 遮罩 设置背景层,z-index值要足够大确保能覆盖,高度 宽度设置满 做到全屏遮罩
 .dialog-cover {
 background: rgba(0,0,0, 0.8);
 position: fixed;
 z-index: 200;
 top: 0;
 left: 0;
 width: 100%;
 height: 100%;
 }
 // 内容层 z-index要比遮罩大,否则会被遮盖,
 .dialog-content{
 position: fixed;
 top: 35%;
 // 移动端使用felx布局 
 display: flex;
 flex-direction: column;
 justify-content: center;
 align-items: center;
 z-index: 300;
 }
</style>

美洲杯竞猜网址 7

作用域插槽是一种特殊类型的插槽,用作一个 (能被传递数据的) 可重用模板,来代替已经渲染好的元素。

  1. 通过 slot 定制弹窗内容

2、vuetest文件夹出现一个dist文件夹,不管他,出来就行。
下面的只是笔记总结,教程到此结束!
2个点,一个在index.html,一个在app.vue

其实就是相当于,在父组件中可以获取到子组件传递出来的props对象,从而渲染到父组件上。

这一步,只要理解了 slot 的作用以及用法,就没有问题了。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

单个插槽:

A.先看index.html
也两个点:1、全局注册组件,2、局部注册组件

您可能感兴趣的文章:

  • Vue组件中slot的用法
  • 深入理解vue中slot与slot-scope的具体使用
  • 详解vue.js数据传递以及数据分发slot
  • Vue2.0 slot分发内容与props验证的方法
  • vue如何使用 Slot 分发内容实例详解
  • Vue内容分发slot(全面解析)
  • vue Render中slots的使用的实例代码
  • 详解Vue学习笔记入门篇之组件的内容分发(slot)
  • Vue.js中组件中的slot实例详解
  • 详解vue slot插槽的使用方法
  • Vue.js之slot深度复制详解

<slot>这是在没有slot传进来的时候,才显示的弹窗内容</slot>
上面是单个插槽也叫默认插槽,在父组件中使用插槽的正确姿势:

注意:自定义标签的命名 :小写,并且包含一个短杠,如:<my-component></my-component>或者使用:is属性<div is="my-component"></div>,当然is也可以提供js环境,如:<div :is="judge?'hello-world':'my-component'"></div>。

TAG标签: 篮球外围下注
版权声明:本文由篮球外围下注发布于系统,转载请注明出处:Vue中的slot使用插槽分发内容的方法