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 相关文章推荐
js判断undefined变量类型使用typeof
Jun 03 Javascript
判断javascript的数据类型(示例代码)
Dec 11 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
Apr 14 Javascript
jQuery聚合函数实例
May 21 Javascript
JavaScript中Boolean对象的属性解析
Oct 21 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
Dec 24 Javascript
基于JavaScript实现TAB标签效果
Jan 12 Javascript
jQuery 限制输入字符串长度
Jun 20 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
Nov 01 Javascript
JS中自定义事件的使用与触发操作实例分析
Nov 01 Javascript
ant-design-vue 实现表格内部字段验证功能
Dec 16 Javascript
vue实现简单全选和反选功能
Sep 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调用mysql存储过程
2007/02/14 PHP
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
2011/06/13 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
JavaScript中的数组操作介绍
2014/12/30 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
jquery判断对象是否为空并遍历对象的简单实例
2016/07/26 Javascript
JS实现带阴历的日历功能详解
2019/01/24 Javascript
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
用Python制作在地图上模拟瘟疫扩散的Gif图
2015/03/31 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
python logging模块的使用
2020/09/07 Python
使用Python通过oBIX协议访问Niagara数据的示例
2020/12/04 Python
伦敦平价潮流珠宝首饰品牌:Astrid & Miyu
2016/10/10 全球购物
小学三年级数学教学反思
2014/01/31 职场文书
新员工入职感言
2014/02/01 职场文书
《雪地里的小画家》教学反思
2014/02/22 职场文书
学校领导班子四风对照检查材料
2014/09/27 职场文书
2014年资料员工作总结
2014/11/18 职场文书
2014年小班保育员工作总结
2014/12/23 职场文书
网络妈妈观后感
2015/06/08 职场文书
《静夜思》教学反思
2016/02/17 职场文书
2016年“11.11”光棍节活动总结
2016/04/05 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server
win11无线投屏在哪设置? win11无线投屏功能的使用方法
2022/04/08 数码科技
详解SQL报错盲注
2022/07/23 SQL Server