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 相关文章推荐
关于JavaScript的一些看法
May 27 Javascript
javascript 函数调用规则
Aug 26 Javascript
JavaScript中的定时器之Item23的合理使用
Oct 30 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
Dec 19 Javascript
BootStrap Table对前台页面表格的支持实例讲解
Dec 22 Javascript
Vue父子组件双向绑定传值的实现方法
Jul 31 Javascript
vue+iview 实现可编辑表格的示例代码
Oct 31 Javascript
微信小程序自定义组件实现环形进度条
Nov 17 Javascript
vue实现百度搜索功能
Dec 28 Javascript
vue-router之实现导航切换过渡动画效果
Oct 31 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
Jul 17 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
Aug 03 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实现合并discuz用户
2015/08/05 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
插件:检测javascript的内存泄漏
2007/03/04 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
JS实现div内部的文字或图片自动循环滚动代码
2013/04/19 Javascript
jquery隔行换色效果实现方法
2015/01/15 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
2015/02/26 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
2016/07/11 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
JavaScript中关于class的调用方法
2017/11/28 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
vue实现移动端悬浮窗效果
2018/12/01 Javascript
详解vue微信网页授权最终解决方案
2019/06/16 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
Python 学习笔记
2008/12/27 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
2019/03/29 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
2018/01/08 HTML / CSS
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
优秀团员个人的自我评价
2013/10/02 职场文书
法学函授自我鉴定
2014/02/06 职场文书
学校食堂食品安全责任书
2014/07/28 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
售后服务质量承诺书
2015/04/29 职场文书
关于分班的感言
2015/08/04 职场文书
Python机器学习之基于Pytorch实现猫狗分类
2021/06/08 Python
Python干货实战之八音符酱小游戏全过程详解
2021/10/24 Python
「回转企鹅罐」10周年纪念展「輪るピングドラム展」海报公开
2022/03/22 日漫