Blogger Information
Blog 12
fans 0
comment 0
visits 8908
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
2020-05-30——axios数据交互及全选多思维扩展
A 枕上人如玉、
Original
764 people have browsed it

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

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post