如何理解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 相关文章推荐
iframe里面的元素触发父窗口元素事件的jquery代码
Oct 19 Javascript
基于jquery实现等比缩放图片
Dec 03 Javascript
JavaScript数据结构和算法之二叉树详解
Feb 11 Javascript
js实现鼠标划过给div加透明度的方法
May 25 Javascript
etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例
Nov 09 Javascript
原生js实现倒计时功能(多种格式调用)
Jan 12 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
Mar 23 jQuery
整理关于Bootstrap过渡动画的慕课笔记
Mar 29 Javascript
jquery鼠标悬停导航下划线滑出效果
Sep 29 jQuery
微信小程序button组件使用详解
Jan 31 Javascript
生成无限制的微信小程序码的示例代码
Sep 20 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
Dec 16 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
PHP截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
PHP的explode和implode的使用说明
2011/07/17 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
使用PHP计算两个路径的相对路径
2013/06/14 PHP
深入PHP许愿墙模块功能分析
2013/06/25 PHP
PHP魔术引号所带来的安全问题分析
2014/07/15 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
utf8的编码算法 转载
2006/12/27 Javascript
javascript 上下banner替换具体实现
2013/11/14 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
2016/12/25 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
Django 前后台的数据传递的方法
2017/08/08 Python
python内置函数:lambda、map、filter简单介绍
2017/11/16 Python
css3中transition属性详解
2014/09/02 HTML / CSS
世界上最全面的汽车零部件和配件集合:JC Whitney
2016/09/04 全球购物
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
香港通票:Hong Kong Pass
2019/02/26 全球购物
女性时尚网购:Chic Me
2019/07/30 全球购物
美国牙科折扣计划:DentalPlans.com
2019/08/26 全球购物
护士上岗前培训自我鉴定
2014/04/20 职场文书
优秀乡村医生先进事迹材料
2014/08/23 职场文书
药店促销活动策划方案
2014/08/24 职场文书
2014年教师思想工作总结
2014/12/03 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
英文投诉信格式
2015/07/03 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
四群教育工作总结
2015/08/10 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS