博客列表 >2020-05-30——axios数据交互及全选多思维扩展

2020-05-30——axios数据交互及全选多思维扩展

A 枕上人如玉、
A 枕上人如玉、原创
2020年05月30日 14:48:00761浏览

app.js

重点:

1.解决this指向问题的三种方式
2.ES6箭头函数的使用
3.三目运算替代if else
4.forEach遍历方法
5.JSONPlaceholder测试api的使用

功能实现

1.全选多思维扩展
2.最终以两行代码完成优化

  1. window.onload = function(){
  2. //第一种方式
  3. //var vm = new Vue({ //全局实例化对象
  4. var vm = new Vue({
  5. el:"#app",
  6. data:{
  7. lists:[],
  8. checkAll:false, //全选的状态
  9. check:false,
  10. },
  11. methods:{
  12. // ES5 写法
  13. getLists:function(){
  14. //第二种方式 (实际项目开发过程中用到的最多的方式)
  15. //提前定义this
  16. //原因:“this是不断变化的,一般情况下由谁调用this就指向谁”
  17. var self = this;
  18. axios({
  19. methods:"get", //get post put delete | 查询 添加 修改 删除
  20. url:"http://jsonplaceholder.typicode.com/users", // 接口地址
  21. // }).then(function(res){ // 请求成功
  22. // 第三种方式
  23. // 原因:“ES6中,箭头函数的this指向定义者,由谁定义this指向谁”
  24. }).then(res=>{ // 请求成功
  25. console.log(res);
  26. // 由于this指向问题不能正常渲染数据
  27. this.lists = res.data; // 渲染数据
  28. // 解决方式
  29. // 第一种方式
  30. //vm.lists = res.data; // 渲染数据
  31. //第二种方式
  32. // self.lists = res.data;
  33. }).catch(function(error){ // 请求失败
  34. console.log(error);
  35. })
  36. },
  37. // ES6 写法
  38. changeCheckAll(){ //触发全选
  39. // 普通for遍历方法
  40. // for( var i=0;i<this.lists.length;i++ ){
  41. // this.lists[i].check = this.checkAll;
  42. // };
  43. // 高级一点的forEach遍历方法
  44. // this指向原因导致不能同步
  45. //this.lists.forEach(function(item,index){
  46. this.lists.forEach(item=>{
  47. item.check = this.checkAll;
  48. });
  49. },
  50. curChange(){
  51. // 1.子选项打勾的个数
  52. // filter() 方法 筛选
  53. // var num = this.lists.filter(function(item){
  54. // return item.check == true
  55. // }).length;
  56. // ES6箭头函数
  57. // var num = this.lists.filter(item => item.check).length;
  58. // console.log(num);
  59. // 2.判断个数 ==10 全选打勾 !=10 全选取消打勾
  60. // if(num==this.lists.length){
  61. // this.checkAll = true;
  62. // }else{
  63. // this.checkAll = false;
  64. // };
  65. // 三目运算 替代 if else
  66. // num == this.lists.length ? this.checkAll = true : this.checkAll = false;
  67. // 优化 every() 返回 true false
  68. // this.checkAll = this.lists.every(function(item){
  69. // return item.check;
  70. // })
  71. // 采用ES6箭头函数
  72. this.checkAll = this.lists.every(item=>item.check);
  73. }
  74. },
  75. mounted:function(){
  76. this.getLists();
  77. }
  78. })
  79. }

案例地址:http://jingrao.tianyuyezi.com/vue-demo/axios/index.html

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议