如何理解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 相关文章推荐
setTimeout与setInterval在不同浏览器下的差异
Jan 24 Javascript
Jquery进度条插件 Progress Bar小问题解决
Jul 12 Javascript
关于hashchangebroker和statehashable的补充文档
Aug 08 Javascript
js正则表达exec与match的区别说明
Jan 29 Javascript
JS模式之简单的订阅者和发布者模式完整实例
Jun 30 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
Apr 06 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
Apr 28 Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
Jun 09 Javascript
微信小程序使用modal组件弹出对话框功能示例
Nov 29 Javascript
Vue+SpringBoot开发V部落博客管理平台
Dec 27 Javascript
React冒泡和阻止冒泡的应用详解
Aug 18 Javascript
Vue为什么要谨慎使用$attrs与$listeners
Aug 27 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
网站当前的在线人数
2006/10/09 PHP
php桌面中心(二) 数据库写入
2007/03/11 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
php使用Image Magick将PDF文件转换为JPG文件的方法
2015/04/01 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
php操作xml并将其插入数据库的实现方法
2016/09/08 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
jQuery入门第一课 jQuery选择符
2010/03/14 Javascript
JS 实现导航栏悬停效果(续)
2013/09/24 Javascript
js获取下拉列表的值和元素个数示例
2014/05/07 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
javascript运动详解
2015/07/06 Javascript
Bootstrap carousel轮转图的使用实例详解
2016/05/17 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
vue 引入公共css文件的简单方法(推荐)
2018/01/20 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
微信小程序实现录音功能
2019/11/22 Javascript
vue 组件销毁并重置的实现
2020/01/13 Javascript
JavaScript实现猜数字游戏
2020/05/20 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
2020/12/16 Javascript
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
python3人脸识别的两种方法
2019/04/25 Python
Python如何计算语句执行时间
2019/11/22 Python
python查看矩阵的行列号以及维数方式
2020/05/22 Python
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
大学毕业感言
2014/01/10 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
教师党员个人整改措施
2014/10/27 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python
python​格式化字符串
2022/04/20 Python