vue.js指令v-for使用及索引获取


Posted in Javascript onNovember 03, 2016

1.v-for

直接上代码。

示例一:

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
 <title></title>
</head>
<body>
 <div id="didi-navigator">
 <ul>
  <li v-for="tab in tabs">
  {{ tab.text }}
  </li>
 </ul>
 </div>
 <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
 <script type="text/javascript">
 new Vue({
  el: '#didi-navigator',
  data: {
  tabs: [
   { text: '巴士' },
   { text: '快车' },
   { text: '专车' },
   { text: '顺风车' },
   { text: '出租车' },
   { text: '代驾' }
  ]
  }
 })
 </script>
</body>
</html>

vue.js指令v-for使用及索引获取

2.索引

在 v-for 块内我们能完全访问父组件作用域内的属性,另有一个特殊变量 $index,正如你猜到的,它是当前数组元素的索引:

<ul id="example-2">
 <li v-for="item in items">
 {{ parentMessage }} - {{ $index }} - {{ item.message }}
 </li>
</ul>
var example2 = new Vue({
 el: '#example-2',
 data: {
 parentMessage: 'Parent',
 items: [
 { message: 'Foo' },
 { message: 'Bar' }
 ]
 }
})

vue.js指令v-for使用及索引获取

另外,你可以为索引指定一个别名(如果 v-for 用于一个对象,则可以为对象的键指定一个别名):

<div v-for="(index, item) in items">
 {{ index }} {{ item.message }}
</div>

 

从 1.0.17 开始可以使用 of 分隔符,更接近 JavaScript 遍历器语法:

<div v-for="item of items"></div>

示例二:

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
 <title></title>
</head>
<body>
 <ul>
 <li v-for="option in options">
  <p class="text-success" v-on:click="getIndex($index)">Text:{{option.text}}--Vlue:{{option.value}}</p>
 </li>
 </ul>
 <div v-if="isNaN(click)==false">
 <span>你点击的索引为: {{ click }}</span>
 </div>
 <div v-else>
 <p class="text-danger">试着点击上方LI条目</p>
 </div>
 <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
 <script type="text/javascript">
 new Vue({
  el: 'body',
  data: {
  click: 'a',
  options: [
   { text: '上海市', value: '20' },
   { text: '湖北省', value: '43' },
   { text: '河南省', value: '45' },
   { text: '北京市', value: '10' }
  ]
  },
  methods:{
  getIndex:function($index){
   this.click=$index;
  }
  }
 });
 </script>
</body>
</html>

vue.js指令v-for使用及索引获取

3.在点击事件中取到索引

方法一:添加自定义属性

示例三:

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title></title>
 <style type="text/css">
  a{display: block;}
 </style>
 </head>
 <body>
 <div>
  <a v-for="(index,item) in items" data-index="{{index}}" v-on:click="onclick" href="http://www.baidu.com">{{ item.text }}</a>
 </div>
 <input type="text" name="" id="index" value=""/>
 <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
 <script type="text/javascript">
 new Vue({
  el: 'body',
  data: {
  items: [
   { text: '巴士' },
   { text: '快车' },
   { text: '专车' },
   { text: '顺风车' },
   { text: '出租车' },
   { text: '代驾' }
  ]
  },
  methods: {
  onclick:function(event){
   event.preventDefault();
   let target = event.target
   console.log(target.getAttribute("data-index"));
   document.getElementById('index').value = target.getAttribute("data-index");
  }
  }
 })
 </script>
 </body>
</html>

vue.js指令v-for使用及索引获取

方法二:直接传入索引值

示例四(和二差不多):

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<style type="text/css">

a{display: block;}

</style>

</head>

<body>

<div>

 <a v-for="(index,item) in items" v-on:click="onclick($index)" href="#">{{ item.text }}</a>

</div>

<input type="text" name="" id="index" value=""/>

<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>

 <script type="text/javascript">

 new Vue({

 el: 'body',

 data: {

 items: [

 { text: '巴士' },

 { text: '快车' },

 { text: '专车' },

 { text: '顺风车' },

 { text: '出租车' },

 { text: '代驾' }

 ]

 },

 methods: {

 onclick:function(index){

// index.preventDefault();

 console.log(index);

 document.getElementById('index').value = index;

}

 }

})

</script>

</body>

</html>

效果与方法一相同。

vue.js指令v-for使用及索引获取

如果想直接传索引可以用以下方法:

示例五:

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title></title>
 <style type="text/css">
  a{display: block;}
 </style>
 </head>
 <body>
 <div>
  <a v-for="(index,item) in items" v-on:click="onclick($index)" href="javascript:void(0)">{{ item.text }}</a>
 </div>
 <input type="text" name="" id="index" value=""/>
 <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
 <script type="text/javascript">
 new Vue({
  el: 'body',
  data: {
  items: [
   { text: '巴士' },
   { text: '快车' },
   { text: '专车' },
   { text: '顺风车' },
   { text: '出租车' },
   { text: '代驾' }
  ]
  },
  methods: {
  onclick:function(index){
//   index.preventDefault();
   console.log(index);
   document.getElementById('index').value = index;
   window.location.href = "http://www.baidu.com";
  }
  }
 })
 </script>
 </body>
</html>

本文已被整理到了《Vue.js前端组件学习教程》,欢迎大家学习阅读。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
分享一个我自己写的ToolTip提示插件(附源码)
Jan 20 Javascript
在页面加载完成后通过jquery给多个span赋值
May 21 Javascript
js实现仿京东2级菜单效果(带延时功能)
Aug 27 Javascript
JavaScript数组的一些奇葩行为
Jan 25 Javascript
深入探讨Vue.js组件和组件通信
Sep 12 Javascript
微信小程序 Record API详解及实例代码
Sep 30 Javascript
Vue.js实现无限加载与分页功能开发
Nov 03 Javascript
js实现tab选项卡切换功能
Jan 13 Javascript
JS 实现banner图片轮播效果(鼠标事件)
Aug 04 Javascript
详解小程序云开发数据库
May 20 Javascript
JS使用cookie保存用户登录信息操作示例
May 30 Javascript
Vue vm.$attrs使用场景详解
Mar 08 Javascript
vue.js初学入门教程(1)
Nov 03 #Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
Nov 03 #Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
Nov 03 #Javascript
Centos7 中安装 Node.js v4.4.4
Nov 03 #Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
Nov 02 #Javascript
微信小程序  audio音频播放详解及实例
Nov 02 #Javascript
微信小程序 vidao实现视频播放和弹幕的功能
Nov 02 #Javascript
You might like
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
destoon实现调用热门关键字的方法
2014/07/15 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
2017/05/30 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
2017/05/17 Javascript
angularjs路由传值$routeParams详解
2020/09/05 Javascript
vue.js项目nginx部署教程
2018/04/05 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
selenium+java中用js来完成日期的修改
2019/10/31 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
2020/11/16 Javascript
python端口扫描系统实现方法
2014/11/19 Python
详解Python设计模式编程中观察者模式与策略模式的运用
2016/03/02 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
django ajax json的实例代码
2018/05/29 Python
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
为什么要用EJB
2014/04/17 面试题
尽职尽责村干部自我鉴定
2014/01/23 职场文书
金融管理应届生求职信
2014/02/20 职场文书
幼儿园中班开学寄语
2014/04/03 职场文书
交通事故赔偿协议书范本
2014/04/15 职场文书
教师业务培训方案
2014/05/01 职场文书
2014年市场部工作总结
2014/11/25 职场文书
公司放假通知范文
2015/04/14 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
MySQL的索引你了解吗
2022/03/13 MySQL
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python