如何理解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 相关文章推荐
解析John Resig Simple JavaScript Inheritance代码
Dec 03 Javascript
使用iframe window的scroll方法控制iframe页面滚动
Mar 05 Javascript
jQuery浏览器CSS3特写兼容实例
Jan 19 Javascript
JQuery实现的图文自动轮播效果插件
Jun 19 Javascript
浅谈JavaScript中的分支结构
Jul 01 Javascript
AngularJS基础 ng-mouseleave 指令详解
Aug 02 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
May 02 Javascript
Node.js连接mongodb实例代码
Jun 06 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
Oct 26 Javascript
Node 搭建一个静态资源服务器的实现
May 20 Javascript
vue安装遇到的5个报错及解决方法
Jun 12 Javascript
Vue实现商品飞入购物车效果(电商项目)
Nov 26 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写的采集程序
2007/03/16 PHP
php修改时间格式的代码
2011/05/29 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
PHP实现的简单网络硬盘
2015/07/29 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
自己的js工具 Event封装
2009/08/21 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
js的toLowerCase方法用法实例
2015/01/27 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
js小数运算出现多位小数如何解决
2015/10/08 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
js中数组插入、删除元素操作的方法
2017/02/15 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
微信小程序 使用腾讯地图SDK详解及实现步骤
2017/02/28 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
javascript实现QQ空间相册展示源码
2017/12/12 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
2018/09/27 Javascript
vue最简单的前后端交互示例详解
2018/10/11 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
matplotlib.pyplot画图 图片的二进制流的获取方法
2018/05/24 Python
python快排算法详解
2019/03/04 Python
基于python求两个列表的并集.交集.差集
2020/02/10 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
国庆65周年演讲稿:回首往昔,展望未来
2014/09/21 职场文书
2015年公司新年寄语
2014/12/08 职场文书
安阳殷墟导游词
2015/02/10 职场文书
公司员工辞职信范文
2015/05/12 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书