vue中的scope使用详解


Posted in Javascript onOctober 29, 2017

我们都知道vue slot插槽可以传递任何属性或html元素,但是在调用组件的页面中我们可以使用 template scope="props"来获取插槽上的属性值,获取到的值是一个对象。

注意:scope="它可以取任意字符串";

上面已经说了 scope获取到的是一个对象,是什么意思呢?我们先来看一个简单的demo就可以明白了~

如下模板页面:

<!DOCTYPE html>
<html>
 <head>
 <title>Vue-scope的理解</title>
 <script src="./libs/vue.js"></script>
 <link rel="stylesheet" href="./css/index.css" rel="external nofollow" />
 <script src="./js/scope.js"></script>
 </head>
 <body>
 <div id="app">
  <tb-list :data="data">
  <template scope="scope">
   <div class="info" :s="JSON.stringify(scope)">
   <p>姓名:{{scope.row.name}}</p>
   <p>年龄: {{scope.row.age}}</p>
   <p>性别: {{scope.row.sex}}</p>
   <p>索引:{{scope.$index}}</p>
   </div>
  </template>
  </tb-list>
 </div>
 <script id="tb-list" type="text/x-template">
  <ul>
  <li v-for="(item, index) in data">
   <slot :row="item" :$index="index"></slot>
  </li>
  </ul>
 </script>
 <script type="text/javascript">
  new Vue({
  el: '#app',
  data() {
   return {
   data: [
    {
    name: 'kongzhi1',
    age: '29',
    sex: 'man'
    }, 
    {
    name: 'kongzhi2',
    age: '30',
    sex: 'woman'
    }
   ]
   }
  },
  methods: {
   
  }
  });
 </script>
 </body>
</html>

js 代码如下:

Vue.component('tb-list', {
 template: '#tb-list',
 props: {
 data: {
  type: Array,
  required: true
 }
 },
 data() {
 return {
 }
 },
 beforeMount() {
 },
 mounted() {
 },
 methods: {
 }
});

上面代码我们注册了一个叫 tb-list 这么一个组件,然后给 tb-list 传递了一个data属性值;该值是一个数组,如下值:

data: [
 {
 name: 'kongzhi1',
 age: '29',
 sex: 'man'
 }, 
 {
 name: 'kongzhi2',
 age: '30',
 sex: 'woman'
 }
]

tb-list组件模板页面是如下:

<ul>
 <li v-for="(item, index) in data">
 <slot :row="item" :$index="index"></slot>
 </li>
</ul>

遍历data属性值,然后使用slot来接收 tb-list组件中的任何内容;其内容如下:

<template scope="scope">
 <div class="info" :s="JSON.stringify(scope)">
 <p>姓名:{{scope.row.name}}</p>
 <p>年龄: {{scope.row.age}}</p>
 <p>性别: {{scope.row.sex}}</p>
 <p>索引:{{scope.$index}}</p>
 </div>
</template>

最后在模板上使用scope来接收slot中的属性;因此scope的值是如下一个对象:

{"row":{"name":"kongzhi1","age":"29","sex":"man"},"$index":0}

因为遍历了二次,因此还有一个是如下对象;

{"row":{"name":"kongzhi2","age":"30","sex":"woman"},"$index":1}

从上面返回的scope属性值我们可以看到,scope返回的值是slot标签上返回的所有属性值,并且是一个对象的形式保存起来,该slot有两个属性,一个是row,另一个是$index, 因此返回 {"row": item, "$index": "index索引"}; 其中item就是data里面的一个个对象。

最后页面被渲染成如下页面;

查看页面效果;

总结

以上所述是小编给大家介绍的vue中的scope使用详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言!

Javascript 相关文章推荐
使用prototype.js进行异步操作
Feb 07 Javascript
js工具方法弹出蒙版
May 08 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
Oct 11 Javascript
js实现收缩菜单效果实例代码
Oct 30 Javascript
九种原生js动画效果
Nov 11 Javascript
JavaScript 对象详细整理总结
Sep 29 Javascript
通过npm引用的vue组件使用详解
Mar 02 Javascript
详解基于webpack搭建react运行环境
Jun 01 Javascript
js+html5实现侧滑页面效果
Jul 15 Javascript
JavaScript中引用vs复制示例详析
Dec 06 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
Dec 06 Javascript
uni-app从安装到卸载的入门教程
May 15 Javascript
Vue.js划分组件的方法
Oct 29 #Javascript
vue.js  父向子组件传参的实例代码
Oct 29 #Javascript
vue.js todolist实现代码
Oct 29 #Javascript
javascript按钮禁用和启用的效果实例代码
Oct 29 #Javascript
jQuery实现切换隐藏与显示同时切换图标功能
Oct 29 #jQuery
bootstrap table sum总数量统计实现方法
Oct 29 #Javascript
vue.js语法及常用指令
Oct 29 #Javascript
You might like
php header示例代码(推荐)
2010/09/08 PHP
redis 队列操作的例子(php)
2012/04/12 PHP
浅析十款PHP开发框架的对比
2013/07/05 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
简单谈谈php延迟静态绑定
2016/01/26 PHP
PHP的curl函数的用法总结
2019/02/14 PHP
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
python操作xml文件示例
2014/04/07 Python
Python3 模块、包调用&amp;路径详解
2017/10/25 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
Mac安装python3的方法步骤
2019/08/09 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
详解python的变量缓存机制
2021/01/24 Python
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
使用HTML5 Canvas为图片填充颜色和纹理的教程
2016/03/21 HTML / CSS
女子锻炼服装和瑜伽服装:Splits59
2019/03/04 全球购物
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
HOTEL INFO英国:搜索全球酒店
2019/08/08 全球购物
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
秸秆管理实施方案
2014/03/15 职场文书
计算机科学技术自荐信
2014/06/12 职场文书
冰雪公主观后感
2015/06/16 职场文书
学校远程教育工作总结
2015/08/11 职场文书
Redis中缓存穿透/击穿/雪崩问题和解决方法
2021/12/04 Redis