新版本的作用域插槽以及旧版本的slot

新版本的作用域插槽以及旧版本的slot

1.作用/概念:预先将使用的内容进行保留

我的理解就是父页面在组件标签内插入任意内容,子组件内插糟slot控制摆放位置(匿名插槽,具名插槽)

案例:

<body>
    <div id='app'>
        <Hello>
            <div>
                这里是插入的内容    //这一部分的内容并不会被输出(原因是被组件覆盖掉了)
            </div>
        </Hello>
    </div>

    <template id="hello">
        <div>
            <h3>这里是Hello组件</h3>
        </div>
    </template>
</body>
////////////////////////////////////////////////////////////////////////注册组件部分
<script>
    Vue.component('Hello', {
        template: '#hello'
    })

    new Vue({
        el: '#app'
    })
</script>

从上面的案例可以看出 直接在组件里面写元素是没有作用的,这时候就需要插槽slot

一旦在组件中加入加入的部分就会被显示出来

案例:

<template id="hello">
        <div>
            <slot></slot>
            <h3>这里是Hello组件</h3>
        </div>
    </template>

具名插槽

<body>
    <div id='app'>
        <Hello>
            <header slot='header'>这里是头部</header>    //这部插入的内容会被输出
            <footer>这里是底部</footer>      //这一部分内容不会被输出因为没有找到对应的插槽
        </Hello>
    </div>
    <template id="hello">
        <div>
            <slot name = "header"></slot>
            <h3>这里是Hello组件</h3>
            <slot name='footer'></slot>
        </div>
    </template>
</body>
<script>
    Vue.component('Hello', {
        template: '#hello'
    })

    new Vue({
        el: '#app'
    })
</script>

新版本的作用域插槽

作用域插槽: 子组件内数据可以被父页面拿到(解决了数据只能从父页面传递给子组件)

v-slot (目前该属性并不完善)

注意: 由于前两种插槽的形式在 vue2.6以上会被废弃,所以要使用v-slot指令来代替

v-slot的好处:

  1. 将具名插槽和作用域插槽进行统一
  2. 要将这两个属性带有vue的标识,并且符合vue两个最大的特性之一(指令的概念)

所以必须掌握

案例:

<div id="app">
    <Hello>
      <template v-slot:header>
        <h1>Here might be a page title</h1>
      </template>

      <p>A paragraph for the main content.</p>
      <p>And another one.</p>

      <template v-slot:footer>
        <p>Here's some contact info</p>
      </template>
    </Hello>
  </div>
  <template id ='hello'>
    <div class="container">
      <header>
        <!-- 我们希望把页头放这里 -->
        <slot name = "header"></slot>
      </header>
      <main>
        <!-- 我们希望把主要内容放这里 -->
      </main>
      <footer>
        <!-- 我们希望把页脚放这里 -->
        <slot name = 'footer'></slot>
      </footer>
    </div>
  </template>
</body>

原文地址:https://www.cnblogs.com/xiaohanga/p/11107276.html

时间: 2024-10-31 09:31:17

新版本的作用域插槽以及旧版本的slot的相关文章

coreData旧版本增加字段,新版本是否可以继续使用旧版本内容的测试(MagicalRecord的使用)

coreData使用第三方库MagicalRecord, 参考文章:http://blog.csdn.net/kuizhang1/article/details/21200367 coreData数据库升级的操作步骤: http://www.07net01.com/zhishi/411401.html 根据这两篇文章测试升级,没有出现任何问题.我的demo项目:https://github.com/lichanghong/CoreDataVersionTest 网上某些资料说:如果你的app运用

ActiveReports 6:如何升级旧版本的项目

如果现在的项目使用的是ActiveReports for .NET 3.0,那么有两种升级方式: 一是使用ActiveReports 6.0附带的转换工具(参见下面"升级ActiveReports for .NET 1.0 或2.0项目"): 二是在Visual Studio中打开工程,用新版本的DLL替换掉旧版本的DLL引用,并且修改代码的编译错误. 替换工程的DLL引用 在Visual Studio中打开需要升级的报表工程. 在解决方案资源管理器中,点击"显示所有文件&q

Advanced Installer 安装前卸载旧版本的办法

原文:Advanced Installer 安装前卸载旧版本的办法 Advanced Installer这个工具百度出来的资料太少了. 在我们平常打包的工作中,经常遇到的一个问题是,如何能在安装新版本的时候友好的提示/卸载之前的旧版本,而不是粗暴的直接让用户自行去卸载呢?今天就这个问题给出下面一个具体的解决办法,话不多说,直接开始: 方案一:安装时自动卸载旧版本 第一步:找到并记录下上一个版本的Upgrade Code,此Code在上一个工程中的如下位置: 第二步:在新版本中的Upgrade C

apicloud安卓更新,新版本不能覆盖旧版本的问题及解决方案

原因:apicloud安卓打包前代码用小乌龟提交,在当前项目的文件夹目录下,都看得到已经提交成功,全部打绿色勾.而在apicloud IDE中部分文件仍旧带星号. 在这种情况下打包,用apicloud更新版本时,就会出现新版本不能覆盖旧版本的问题. 解决方案:备份项目代码,删除项目内代码文件,用小乌龟提交空的项目文件夹,然后更新该项目文件夹,判断服务器svn上代码是否为空,不为空,继续清空提交,更新,直到为空.然后将备份的代码拷贝到空的项目文件夹里面,提交上去.到apicloud IDE中就可以

新版本eclipse导入旧版本插件

在新版本eclipse中,点击  File --->Import , 再选择 Install --->From Existing Installation 点击Browse,选择旧版本的eclipse目录路径. 最后再选择需要安装的插件就可以了.

C#winform程序安装时自动卸载新版本覆盖旧版本

vs2005为winform程序做的安装包.在以有程序旧版本的机子上用新版本的安装包安装软件时提示  “以经安装该产品的另一个版本.无法继续安装此版本........” 在安装部署项目中设“RemovePreviousVersion”为true后也不行.  还是提示要卸载旧版本才能安装新版本..如何设置在安装新版本时复盖掉旧版本?? 1.确认两个版本的RemovePreviousVersion设置都是true的 2.确认两个版本有不同的ProductCode和相同的UpgradeCode 3.确

vue模拟后台数据,请求本地数据的配置(旧版本dev-server.js,新版本webpack.dev.conf.js)

最近学习一个vue-cli的项目,需要与后台进行数据交互,这里使用本地json数据来模仿后台数据交互流程.然而发现build文件夹下没有dev-server.js文件了,因为新版本的vue-webpack-template 中已经去掉了dev-server.js,取而代之的是webpack.dev.conf.js文件,所以可以在webpack.dev.conf.js里配置本地访问. 对比旧版本的build文件夹,新版本的build下少了dev-server.js和dev-client.js 旧版

C++开发新版本vs使用旧版本vs编译的静态库动态库

关于vs潜在的升级问题概述 (Visual C++)查看官网的介绍:潜在的升级问题概述 (Visual C++).主要问题: 1. 如果使用 /GL(全程序优化)进行编译,则生成的对象文件只能使用生成它时所用的同一工具集进行链接.即若在编译静态库时开启了全程序优化,那么编译出的静态库不可移植. 2. 在 Visual Studio 2013 及更低版本中,不能保证使用不同编译器工具集和运行时库版本生成的对象文件 (OBJ).静态库 (LIB).动态库 (DLL) 和可执行文件 (EXE) 之间的

Vue.js 源码分析(二十六) 高级应用 作用域插槽 详解

普通的插槽里面的数据是在父组件里定义的,而作用域插槽里的数据是在子组件定义的. 有时候作用域插槽很有用,比如使用Element-ui表格自定义模板时就用到了作用域插槽,Element-ui定义了每个单元格数据的显示格式,我们可以通过作用域插槽自定义数据的显示格式,对于二次开发来说具有很强的扩展性. 作用域插槽使用<template>来定义模板,可以带两个参数,分别是: slot-scope    ;模板里的变量,旧版使用scope属性 slot              ;该作用域插槽的nam