如何理解Vue的作用域插槽的实现原理


Posted in Javascript onAugust 19, 2017

本文介绍了如何理解Vue的作用域插槽的实现原理,分享给大家,也给自己留个笔记

举个例子,比如我写了一个可以实现条纹相间的列表组件,发布后,使用者可以自定义每一行的内容或样式(普通的slot就可以完成这个工作)。而作用域插槽的关键之处就在于,父组件能接收来自子组件的slot传递过来的参数,具体看案例和注释。

<!DOCTYPE html>
  <html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>Vue作用域插槽</title>
    <script src="https://cdn.bootcss.com/vue/2.3.4/vue.js"></script>
  </head>
  <body>
    <div id="app2">
      <my-stripe-list :items="users" odd-bgcolor="#D3DCE6" even-bgcolor="#E5E9F2">
        <!-- props对象接收来自子组件slot的$index参数 -->
        <template slot="cont" scope="props">
          <span>{{users[props.$index].id}}</span>
          <span>{{users[props.$index].name}}</span>
          <span>{{users[props.$index].age}}</span>
          <!-- 这里可以自定[编辑][删除]按钮的链接和样式 -->
          <a :href="'#edit/id/'+users[props.$index].id" rel="external nofollow" >编辑</a>
          <a :href="'#del/id/'+users[props.$index].id" rel="external nofollow" >删除</a>
        </template>
      </my-stripe-list>
    </div>
    <script>
      Vue.component('my-stripe-list', {
        /*slot的$index可以传递到父组件中*/
        template: `
          <div>
            <div v-for="(item, index) in items" style="line-height:2.2;" :style="index % 2 === 0 ? 'background:'+oddBgcolor : 'background:'+evenBgcolor">
              <slot name="cont" :$index="index"></slot>
            </div>
          </div>
        `,
        props: {
          items: Array,
          oddBgcolor: String,
          evenBgcolor: String
        }
      });
      new Vue({
        el: '#app2',
        data: {
          users: [
            {id: 1, name: '张三', age: 20},
            {id: 2, name: '李四', age: 22},
            {id: 3, name: '王五', age: 27},
            {id: 4, name: '张龙', age: 27},
            {id: 5, name: '赵虎', age: 27}
          ]
        }
      });
    </script>
  </body>
</html>

效果如下:

如何理解Vue的作用域插槽的实现原理

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

Javascript 相关文章推荐
prototype 的说明 js类
Sep 07 Javascript
ext combobox动态加载数据库数据(附前后台)
Jun 17 Javascript
js防止页面被iframe调用的方法
Oct 30 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
Apr 06 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
Oct 14 Javascript
JS中数组重排序方法
Nov 11 Javascript
jQueryUI Sortable 应用Demo(分享)
Sep 07 jQuery
通过fastclick源码分析彻底解决tap“点透”
Dec 24 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
Mar 06 Javascript
微信小程序实现topBar底部选择栏效果
Jul 20 Javascript
Layui实现主窗口和Iframe层参数传递
Nov 14 Javascript
vue+element实现图片上传及裁剪功能
Jun 29 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
Aug 19 #Javascript
JavaScript文件的同步和异步加载的实现代码
Aug 19 #Javascript
深入理解ES6学习笔记之块级作用域绑定
Aug 19 #Javascript
深入理解ES6的迭代器与生成器
Aug 19 #Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
Aug 19 #jQuery
Vue自定义事件(详解)
Aug 19 #Javascript
Vue内容分发slot(全面解析)
Aug 19 #Javascript
You might like
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
7个超级实用的PHP代码片段
2011/07/11 PHP
php URL验证正则表达式
2011/07/19 PHP
php和nginx交互实例讲解
2019/09/24 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
JQuery从头学起第一讲
2010/07/04 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
canvas绘制七巧板
2017/02/03 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
node.js中express-session配置项详解
2017/05/31 Javascript
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
2019/09/28 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
Python使用sax模块解析XML文件示例
2019/04/04 Python
Python操作qml对象过程详解
2019/09/26 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
一些Unix笔试题和面试题
2012/09/25 面试题
年终总结会议主持词
2014/03/17 职场文书
乡镇综治宣传月活动总结
2014/07/02 职场文书
杭州西湖英语导游词
2015/02/03 职场文书
质量保证书怎么写
2015/02/27 职场文书
2015年公路路政个人工作总结
2015/07/24 职场文书
关于空气污染危害的感想
2015/08/11 职场文书
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript
mysql主从复制的实现步骤
2021/10/24 MySQL
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers
Python实现对齐打印 format函数的用法
2022/04/28 Python