文章目录

  • 06_列表渲染
  • 07_列表渲染_过滤与排序
  • 08_事件处理

06_列表渲染

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>06_列表渲染</title>
</head>
<body>
<!--
1. 列表显示数组: v-for / index对象: v-for / key
2. 列表的更新显示删除item替换item
-->
<div id="demo"><h2>测试:v-for 遍历数组</h2><ul><!--下标和一个元素 key把一个文本变化成一个表达式--><li v-for="(p,index) in persons" :key="index"><tr>[{{index+1}}]-[{{p.name}}]-[{{p.age}}]|<!--根据索引删除--><button @click="deleteP(index)" v-shw="ok">删除</button>|<!--记得是数组--><button @click="updateP(index,{name:'cat',age:18})" v-show="!ok">更新</button><button @click="ok=!ok">切换</button><button @click="addP({name:'tiger',age:10})">增加</button></li></ul><h2>测试:v-for 遍历对象</h2><ul><!--    item 是属性值  key是属性名--><li v-for="(item,key) in persons[1]":key="key">{{key}}:{{item}}</li></ul>
</div>
<script type="text/javascript" src="../js/vue.js"></script>
<script type="text/javascript">new Vue({el:'#demo',data: {ok:true,persons: [{name: 'tom', age: 18},{name: '小黄人', age: 12},{name: 'jum', age: 10},{name: 'job', age: 20}]},methods:{deleteP(index){this.persons.splice(index,1)// 调用了不是原生数组的splice(), 而是一个变异(重写)方法// 1. 调用原生的数组的对应方法// 2. 更新界面},updateP(index,newP){this.persons.splice(index,1,newP)},addP(newP){this.persons.push(newP)}}})
</script>
</body>
</html>
================================================================================================================================
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>06_列表渲染</title>
</head>
<body><!--
1. 列表显示数组: v-for / index对象: v-for / key
2. 列表的更新显示删除item替换item
--><div id="demo"><h2>测试: v-for 遍历数组</h2><ul><li v-for="(p, index) in persons" :key="index">{{index}}--{{p.name}}--{{p.age}}--<button @click="deleteP(index)">删除</button>--<button @click="updateP(index, {name:'Cat', age: 16})">更新</button></li></ul><button @click="addP({name: 'xfzhang', age: 18})">添加</button><h2>测试: v-for 遍历对象</h2><ul><li v-for="(item, key) in persons[1]" :key="key">{{key}}={{item}}</li></ul></div><script type="text/javascript" src="../js/vue.js"></script>
<script type="text/javascript">new Vue({el: '#demo',data: {persons: [{name: 'Tom', age:18},{name: 'Jack', age:17},{name: 'Bob', age:19},{name: 'Mary', age:16}]},methods: {deleteP (index) {this.persons.splice(index, 1) // 调用了不是原生数组的splice(), 而是一个变异(重写)方法// 1. 调用原生的数组的对应方法// 2. 更新界面},updateP (index, newP) {console.log('updateP', index, newP)// this.persons[index] = newP  // vue根本就不知道this.persons.splice(index, 1, newP)// this.persons = []},addP (newP) {this.persons.push(newP)}}})
</script>
</body>
</html>

07_列表渲染_过滤与排序

const声明一个只读的常量,
,常量的值是不能改变的,使用如下const i18n = new VueI18n({locale: 'zh',messages: {'zh': requestAnimationFrame('@/assets/languages/zh.json'),'en': requestAnimationFrame('@/assets/languages/en.json')}
})
export default i18n
另外,var 是函数级作用域,let是块级作用域含义:es6 语法
扩展运算符( spread )是三个点(…)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。操作数组:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>06_列表渲染_过滤与排序</title>
</head>
<body>
<!--
1. 列表过滤
2. 列表排序
--><div id="demo"><input type="text" v-model="searchName"><ul><li v-for="(p, index) in filterPersons" :key="index">{{index}}--{{p.name}}--{{p.age}}</li></ul><div><button @click="setOrderType(2)">年龄升序</button><button @click="setOrderType(1)">年龄降序</button><button @click="setOrderType(0)">原本顺序</button></div>
</div><script type="text/javascript" src="../js/vue.js"></script>
<script type="text/javascript">new Vue({el: '#demo',data: {searchName: '',orderType: 0, // 0代表不排序, 1代表降序, 2代表升序persons: [{name: 'Tom', age:18},{name: 'Jack', age:17},{name: 'Bob', age:19},{name: 'Mary', age:16}]},computed: {filterPersons () {
//        debugger// 取出相关数据const {searchName, persons, orderType} = this/* 含义:扩展运算符( spread )是三个点(…)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。*/let arr = [...persons]// 过滤数组if(searchName.trim()) {arr = persons.filter(p => p.name.indexOf(searchName)!==-1)}// 排序if(orderType) {arr.sort(function (p1, p2) {if(orderType===1) { // 降序return p2.age-p1.age} else { // 升序return p1.age-p2.age}})}return arr}},methods: {setOrderType (orderType) {this.orderType = orderType}}})
</script>
</body>
</html>

08_事件处理

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>07_事件处理</title><style>.parent {width: 400px;height: 200px;border: 0px red solid;margin:0 auto;position: relative}.child {width: 100px;height: 100px;border: 1px red solid;position:absolute;left: 0;right: 0;top:0;bottom:0;margin-left: auto;margin-right: auto;margin-top:auto;margin-bottom:auto;}</style>
</head>
<body>
<!--
1. 绑定监听:v-on:xxx="fun"@xxx="fun"@xxx="fun(参数)"默认事件形参: event隐含属性对象: $event
2. 事件修饰符:.prevent : 阻止事件的默认行为 event.preventDefault().stop : 停止事件冒泡 event.stopPropagation()
3. 按键修饰符.keycode : 操作的是某个keycode值的健.enter : 操作的是enter键KeyDown、KeyPress和KeyUp事件的区别与联系,以后就可以根据需求来选择使用。
KeyDown:在控件有焦点的情况下按下键时发生。
KeyPress:在控件有焦点的情况下按下键时发生。
KeyUp:在控件有焦点的情况下释放键时发生。1、KeyPress主要用来接收字母、数字等ANSI字符
KeyDown 和 KeyUP 事件过程通常可以捕获键盘除了PrScrn所有按键(这里不讨论特殊键盘的特殊键2、KeyPress 只能捕获单个字符
KeyDown 和KeyUp 可以捕获组合键。
3、KeyPress 不显示键盘的物理状态(SHIFT键),而只是传递一个字符。KeyPress 将每个字符的大、小写形式作为不同的键代码解
释,即作为两种不同的字符。
KeyDown 和KeyUp 不能判断键值字母的大小。KeyDown 和 KeyUp 用两种参数解释每个字符的大写形式和小写形式:keycode — 显
示物理的键(将 A 和 a 作为同一个键返回)和 shift —指示 shift + key 键的状态而且返回 A 或 a 其中之一。
5、KeyPress 不区分小键盘和主键盘的数字字符。
KeyDown 和KeyUp 区分小键盘和主键盘的数字字符。
6、KeyDown、KeyUp事件是当按下 ( KeyDown ) 或松开 ( KeyUp ) 一个键时发生的。
由于一般按下键盘的键往往会立即放开(这和鼠标不同),所以这两个事件使用哪个差别不大。
而且,up和其他两者还有一个区别:要判断key修改后的状态必须用up。
-->
<div id="example" class="parent"><h1>1.监听绑定事件</h1><button @click="test1">test1</button><button @click="test2('欢迎你的到来')">test2</button><!--$event代表事件对象--><button @click="test3('abc',$event)">test3</button><h1>2.事件修饰符</h1><a href="http://www.baidu.com" @click.prevent="test4">百度一下</a><div style="width:200px;height: 200px;background: red" @click="test5"><div style="width:100px;height:100px;background: blue" @click.stop="test6"></div></div><h1>3.按键修饰符</h1><input type="text" @keyup.13="test7"><input type="text" @keyup.enter="test8">
</div>
<script type="text/javascript" src="../js/vue.js"></script>
<script>new Vue({el:'#example',data:{},methods:{test1(event){alert(event.target.innerHTML)},test2(msg){alert(msg)},test3(msg,event){alert(msg+'=========='+event.target.textContent)},test4(){alert('prevent阻止事件的默认行为')},test5(){alert("out")},test6(){alert("inner")},test7(){/ if(event.keyCode===13){ 这是最原始的写法//   console.log(event.keyCode)// }alert(event.target.value)},test8(){alert(event.target.value)}}})
</script>
</body>
</html>

vue学习代码理解v-for数组遍历和对象遍历以及事件处理相关推荐

  1. VUE 学习代码理解(1~5课时代码)

    文章目录 HelloWorld 模板语法 03_计算属性和监视 04_class与style绑定 05_条件渲染 HelloWorld <!DOCTYPE html> <html l ...

  2. js数组遍历和对象遍历

    针对js各种遍历作一个总结分析,从类型用处:分数组遍历和对象遍历:还有性能,优缺点等. JS数组遍历: 1,普通for循环,经常用的数组遍历 var arr = [1,2,0,3,9];for ( v ...

  3. ES6数组遍历和对象遍历的方法

    第一部分:数组 一.数组遍历 (1)数组.reduce遍历(经典案例:求和)(里面函数后面不要忘记加0了) *注意点:reduce((形参1,形参2,形参3)=>{  return 形参1+形参 ...

  4. js数组遍历、对象遍历、字符串遍历

    2019独角兽企业重金招聘Python工程师标准>>> 数组遍历 for --使用变量将数组长度缓存起来,在数组较长时性能优化效果明显 for(var i=0,len=arr.len ...

  5. 数组遍历VS对象遍历

    数组遍历 const nameArray2 = ['zhao', 'qian', 'zhang', 'sun', 'li']; nameArray2.map(() => {}); // retu ...

  6. VUE 学习代码 监视和 模板语法回调函数

    文章目录 HelloWorld 模板语法 03_计算属性和监视 HelloWorld <!DOCTYPE html> <html lang="en"> &l ...

  7. 2w多字总结的VUE学习文档

    VUE学习文档 文章目录 VUE学习文档 回顾: 总结 0 目标 1.前言 2.认识Vue 3.快速入门 3.1.创建工程 3.2.安装vue 3.2.1.下载安装 3.2.2.使用CDN 3.3.v ...

  8. JS/Jquery遍历JSON对象、JSON数组、JSON数组字符串、JSON对象字符串

    JS遍历JSON对象 JSON对象 var jsonObj = {"id": 102,"year": "2019-2020","l ...

  9. 对象遍历(对象forEach遍历)

    对象遍历(对象forEach遍历) 对象遍历 对象fon in 遍历 对象keys 遍历 对象values 遍历 对象getOwnPropertyNames遍历 使用Reflect.ownKeys(o ...

最新文章

  1. 【MySQL】(图解)快速理解内连接、外连接、左连接、右连接
  2. sql 默认值为0_int 默认值为0
  3. CSS 选择器优先级
  4. 代码签名工具有哪些?好用的数字签名工具推荐
  5. 贝壳如何docker安装openwrt_群晖Docker安装openwrt简单图文教程(黑白群晖均适用)...
  6. 《英雄联盟》支撑最高750万同时在线用户的聊天服务打造
  7. 迈捷php邮箱系统源码,10分钟临时邮箱源码-php bccto.me的php版本源码 windows主机即可 - 下载 - 搜珍网...
  8. 低功耗微波雷达模块,LED庭院灯智能感应,雷达传感器助力节能减排
  9. 什么是一维表 什么是二维表
  10. 统计学_显著性检验综述
  11. Windows文件系统-NTFS文件系统
  12. Python的faker模块使用
  13. 运行提速:让电脑从拖拉机引擎变成宝马引擎必备知识
  14. cisco 2960 交换机 配置流程
  15. 六边形地图生成(1)——基础地形
  16. [Python随笔]暴力解解决“崩铁”的引航罗盘解密
  17. ubuntu20.04安装ros2 foxy
  18. 啥是BGP机房啊,被科普一下!
  19. 近五年中文电子病历命名实体识别研究进展
  20. java obervable_了解Java的Observable和JavaFX的Observable

热门文章

  1. 网格自适应_网格自适应的 2 种方法——实现更高效的计算
  2. MPU6050工作原理及STM32控制MPU6050
  3. C# 未能加载文件或程序集“ Newtonsoft.Json” Json格式错误
  4. 2个线程共同处理冒泡排序 Linux 双线程处理
  5. 鸿蒙系统的结构图,一图看懂鸿蒙系统中的JS开发框架!
  6. 小白使用Eclipse 的基本设置
  7. webRTC之Mesh/MCU/SFU通信架构区别(九)
  8. android7.0+关闭wifi连接CA验证
  9. 解决Tensorflow使用CPU报错
  10. 使用 FUSE 开发自己的文件系统