如何理解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 相关文章推荐
js 纯数字不重复排列的另类方法
Jul 17 Javascript
jquery实现的代替传统checkbox样式插件
Jun 19 Javascript
4种JavaScript实现简单tab选项卡切换的方法
Jan 06 Javascript
Angularjs中UI Router全攻略
Jan 29 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
Apr 06 Javascript
jQuery实现表格元素动态创建功能
Jan 09 Javascript
五步轻松实现JavaScript HTML时钟效果
Mar 25 Javascript
尝试自己动手用react来写一个分页组件(小结)
Feb 09 Javascript
vue双向数据绑定知识点总结
Apr 18 Javascript
详解使用mpvue开发github小程序总结
Jul 25 Javascript
JS拖拽排序插件Sortable.js用法实例分析
Feb 20 Javascript
jQuery 选择方法及$(this)用法实例分析
May 19 jQuery
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-MySQL教程归纳总结
2008/06/07 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
2015/09/23 PHP
php支持断点续传、分块下载的类
2016/05/02 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
2013/11/05 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
jQuery UI制作选项卡(tabs)
2016/12/13 Javascript
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
Vuex的初探与实战小结
2018/11/26 Javascript
详解小程序用户登录状态检查与更新实例
2019/05/15 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
Python 自动化表单提交实例代码
2017/06/08 Python
Python django框架应用中实现获取访问者ip地址示例
2019/05/17 Python
django使用django-apscheduler 实现定时任务的例子
2019/07/20 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
幼儿园中秋节活动方案
2014/02/06 职场文书
2014年收银工作总结
2014/11/13 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
Python的flask接收前台的ajax的post数据和get数据的方法
2021/04/12 Python
python自动计算图像数据集的RGB均值
2021/06/18 Python
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL
nginx之queue的具体使用
2022/06/28 Servers