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 相关文章推荐
判断用户的在线状态 onbeforeunload事件
Mar 05 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
Oct 24 Javascript
js中通过父级进行查找定位元素
Jun 15 Javascript
使用原生JS实现弹出层特效
Dec 22 Javascript
js设置document.domain实现跨域的注意点分析
May 21 Javascript
Js获取图片原始宽高的实现代码
May 17 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
May 31 Javascript
node.js 发布订阅模式的实例
Sep 10 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
Sep 30 Javascript
React组件中的this的具体使用
Feb 28 Javascript
微信小程序canvas实现刮刮乐效果
Jul 09 Javascript
ant-design-vue按需加载的坑的解决
May 14 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
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
php REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
php数据库抽象层 PDO
2011/05/07 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
PHP中如何使用session实现保存用户登录信息
2015/10/20 PHP
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
js 表单提交后按钮变灰的实例代码
2013/08/16 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
常用的Javascript设计模式小结
2015/12/09 Javascript
IE和Firefox之间在JavaScript语法上的差异
2016/04/22 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
Swiper实现轮播图效果
2017/07/03 Javascript
微信小程序支付前端源码
2018/08/29 Javascript
Vue项目安装插件并保存
2019/01/28 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
JS实现贪吃蛇游戏
2019/11/15 Javascript
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
Python实现的一个简单LRU cache
2014/09/26 Python
python如何实现内容写在图片上
2018/03/23 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
python try...finally...的实现方法
2020/11/25 Python
selenium携带cookies模拟登陆CSDN的实现
2021/01/19 Python
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
使用phonegap播放音频的实现方法
2017/03/31 HTML / CSS
管理建议书范文
2014/05/13 职场文书
资助贫困学生倡议书
2014/05/16 职场文书
校园演讲稿汇总
2014/05/21 职场文书
九寨沟导游词
2015/02/02 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书
MySQL 查询速度慢的原因
2021/05/25 MySQL