如何理解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 相关文章推荐
关于window.pageYOffset和document.documentElement.scrollTop
Apr 05 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
Feb 22 Javascript
JavaScript简介
Feb 15 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
Sep 16 Javascript
JS实现太极旋转思路分析
Dec 09 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
Jan 20 Javascript
Vue filters过滤器的使用方法
Jul 14 Javascript
前端主流框架vue学习笔记第二篇
Jul 26 Javascript
详解webpack进阶之loader篇
Aug 23 Javascript
使用命令行工具npm新创建一个vue项目的方法
Dec 27 Javascript
从0到1构建vueSSR项目之路由的构建
Mar 07 Javascript
jquery实现穿梭框功能
Jan 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
通过文字传递创建的图形按钮
2006/10/09 PHP
逐步提升php框架的性能
2008/01/10 PHP
PHP获取中英混合字符串长度的方法
2014/06/07 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
PHP中“=&gt;
2019/03/01 PHP
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
用js代码改变单选框选中状态的简单实例
2013/12/18 Javascript
jQuery对Select的操作大集合(收藏)
2013/12/28 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
2014/03/05 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
简单学习5种处理Vue.js异常的方法
2019/06/17 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
2019/12/10 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
python缩进区别分析
2014/02/15 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
python利用OpenCV2实现人脸检测
2020/04/16 Python
python else语句在循环中的运用详解
2020/07/06 Python
解决运行出现'dict' object has no attribute 'has_key'问题
2020/07/15 Python
canvas学习和滤镜实现代码
2018/08/22 HTML / CSS
草莓网化妆品日本站:Strawberrynet日本
2017/10/20 全球购物
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
销售心得体会
2014/01/02 职场文书
五一手机促销方案
2014/03/08 职场文书
安全负责人任命书
2014/06/06 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
python 实现的截屏工具
2021/05/08 Python