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 模拟用户单击事件
Dec 31 Javascript
用C/C++来实现 Node.js 的模块(二)
Sep 24 Javascript
jquery树形菜单效果的简单实例
Jun 06 Javascript
微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例
Oct 13 Javascript
Ajax跨域实现代码(后台jsp)
Jan 21 Javascript
详解layui弹窗父子窗口之间传参数的方法
Jan 16 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
Jan 31 Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
Apr 08 Javascript
vue使用keep-alive保持滚动条位置的实现方法
Apr 09 Javascript
使用vue实现多规格选择实例(SKU)
Aug 23 Javascript
微信小程序加载机制及运行机制图解
Nov 27 Javascript
阿望教你用vue写扫雷小游戏
Jan 20 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使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
PHP+MySQL之Insert Into数据插入用法分析
2015/09/27 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
PHP 中常量的知识整理
2017/04/14 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
PHP+MySQL实现消息队列的方法分析
2018/05/09 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
jQuery中jqGrid分页实现代码
2011/11/04 Javascript
JS事件在IE与FF中的区别详细解析
2013/11/20 Javascript
javascript操作html控件实例(javascript添加html)
2013/12/02 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
js获取鼠标位置实例详解
2015/12/09 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
React 高阶组件入门介绍
2018/01/11 Javascript
详解django模板与vue.js冲突问题
2019/07/07 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
linux下安装easy_install的方法
2013/02/10 Python
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
Python读写zip压缩文件的方法
2018/08/29 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
python实现文字版扫雷
2020/04/24 Python
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
马来西亚在线健康商店:Medipal Malaysia
2020/04/13 全球购物
实习生求职自荐信
2014/02/07 职场文书
群众路线教育党员自我剖析材料
2014/10/06 职场文书
领导参观欢迎词
2015/01/26 职场文书
2015国际残疾人日活动总结
2015/03/24 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
新闻稿件写作范文
2015/07/18 职场文书
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python