ngFor-引用类型

需求:

一个数组list里面很多项是接口返回的值:
此时:调用不同的接口(eg:调用了三个接口返回不同的值),返回的数据组装成了list,
在html渲染list展示数据!!!
eg:

public a=1;
public b=2;
public c=3;
list=[
  {name:'zs',value:this.a},
  {name:'ls',value:this.b},
  {name:'ww',value:this.c},
];
// 模拟接口:
aFuc(){
  console.log("aFuc执行了");
  setTimeout(()=>{
    this.a=111;
  })
}
bFuc(){
  console.log("bFuc执行了");
  setTimeout(()=>{
    this.b=222;
  })
}
cFuc(){
  console.log("cFuc执行了");
  setTimeout(()=>{
    this.c=333;
  })
}

问题:
在做echarts渲染图的时候,遇到同样的问题,我改变了options里面的值,但是图表没有刷新!!!

注:引用类型:改变了里面某些值,但是引用地址没有变化,所以界面不会更新数据的!
方法:

  1. 不使用对象组合了!(不使用引用类型)
  2. 整个对象重新赋值:(笨办法)
 setTimeout(()=>{
    this.a=111;
    // 在每个异步里面,重新给list赋值!!!
    this.list=[
   	  {name:'zs',value:this.a},
 	  {name:'ls',value:this.b},
 	  {name:'ww',value:this.c},
];
  })
  1. 在每个异步里面,给list重新深拷贝:==>此时:想法是错误的!!!!!!!!!
在这里插入代码片

简单逻辑:

var a=1,b=2;
var arr=[{name:"a",value:a},{name:'b',value:b}];

b=222;
console.log(arr); // 

此时:
var arr的时候,取a和b的值,赋给arr的value,但是就此 断开关系,之后无论a和b如何变化值,跟arr没有关系了!!!!
如果想接着有关系,需要给arr改变值(直接改a和b是无效的!)eg:

arr[1].value=222;

上面逻辑需要修改:==>需要深拷贝的想法又错误了:
此时:已经可以正常修改数据了!(已经达到目标,不需要拷贝了!)

public a=1;
public b=2;
public c=3;
list=[
  {name:'zs',value:this.a},
  {name:'ls',value:this.b},
  {name:'ww',value:this.c},
];
// 模拟接口:
aFuc(){
  console.log("aFuc执行了");
  setTimeout(()=>{
    this.a=111;
    this.list[0].value=this.a;
    console.log(this.list);
  },1000)
}
bFuc(){
  console.log("bFuc执行了");
  setTimeout(()=>{
    this.b=222;
    this.list[1].value=this.b;
    // this.list=JSON.parse(JSON.stringify(this.list));
  },2000)
}
cFuc(){
  console.log("cFuc执行了");
  setTimeout(()=>{
    this.c=333;
    this.list[2].value=this.c;
    // this.list=JSON.parse(JSON.stringify(this.list));
  },3000)
}

也就是说:*ngFor的 时候,可以检测到内部变量变化?
==>肯定可以的啊:list push以后,可以刷新页面!最简单的例子!

注:angualr和vue的情况是否相同?
vue:使用arr[0]这种下标改变值的时候,视图层是不会更新的!
angular:试一下!应该可以的

echarts变化没有更新的需求分析:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值