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实现的动态添加表单元素input,button等(appendChild)
Nov 24 Javascript
jQuery选择没有colspan属性的td的代码
Jul 06 Javascript
Javascript中的this绑定介绍
Sep 22 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
Mar 10 Javascript
jQuery的事件委托实例分析
Jul 15 Javascript
轻松实现js图片预览功能
Jan 18 Javascript
javascript弹出窗口中增加确定取消按钮
Jun 24 Javascript
JSON 对象未定义错误的解决方法
Sep 29 Javascript
纯js实现悬浮按钮组件
Dec 17 Javascript
详解js的六大数据类型
Dec 27 Javascript
jQuery自定义插件详解及实例代码
Dec 29 Javascript
vue给组件传递不同的值方法
Sep 29 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 CLI实现简单的数据库实时监控调度
2009/07/01 PHP
浅谈PHP的反射API
2017/02/26 PHP
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
javascript的数据类型、字面量、变量介绍
2012/05/23 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
JavaScript通过this变量快速找出用户选中radio按钮的方法
2015/03/23 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
JavaScript中最常见的三个面试题解析
2017/03/04 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
js验证账户名是否重复
2020/05/26 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
2014/07/18 Python
详解Django框架中的视图级缓存
2015/07/23 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
Python进程池Pool应用实例分析
2019/11/27 Python
基于python3抓取pinpoint应用信息入库
2020/01/08 Python
Python动态强类型解释型语言原理解析
2020/03/25 Python
Python txt文件如何转换成字典
2020/11/03 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
2014村务公开实施方案
2014/02/25 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL