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 相关文章推荐
用Javscript实现表单复选框的全选功能
May 25 Javascript
javascript各种复制代码收集
Sep 20 Javascript
执行iframe中的javascript方法
Oct 07 Javascript
分享20款好玩的jQuery游戏
Apr 17 Javascript
JQuery触发radio或checkbox的change事件
Dec 18 Javascript
js创建表单元素并使用submit进行提交
Aug 14 Javascript
Javascript学习笔记之数组的遍历和 length 属性
Nov 23 Javascript
JavaScript与Java正则表达式写法的区别介绍
Aug 15 Javascript
vue中如何创建多个ueditor实例教程
Nov 14 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
Oct 28 Javascript
javascript代码实现简易计算器
Jan 25 Javascript
vite2.0+vue3移动端项目实战详解
Mar 03 Vue.js
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函数method_exists()与is_callable()的区别
2013/06/21 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
php微信开发之图片回复功能
2018/06/14 PHP
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
常用的JavaScript WEB操作方法分享
2015/02/28 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
Vue实现多标签选择器
2019/11/28 Javascript
vue mvvm数据响应实现
2020/11/11 Javascript
初步剖析C语言编程中的结构体
2016/01/16 Python
python微信公众号之关键词自动回复
2018/06/15 Python
Python json模块dumps、loads操作示例
2018/09/06 Python
Python爬取成语接龙类网站
2018/10/19 Python
Python高斯消除矩阵
2019/01/02 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
django fernet fields字段加密实践详解
2019/08/12 Python
Python字典底层实现原理详解
2019/12/18 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
如何对python的字典进行排序
2020/06/19 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
周鸿祎:教你写创业计划书
2013/12/30 职场文书
《孙权劝学》教学反思
2014/04/23 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
孝女彩金观后感
2015/06/10 职场文书
2015年挂职锻炼个人总结
2015/10/22 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书
详解盒子端CSS动画性能提升
2021/05/24 HTML / CSS
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技