数组的操作不能让响应式框架(angular和vue都出现过)更新视图的问题和原因

1.vue遇到过一次维护项目组里项目时 发现了我对数组操作时 视图没有更新 我知道vue的响应式建立在js的getter和setter的基础上 后来去查找资料后发现 数组里的元素不是每一个都有自己的get和set属性 所以我通过索引直接去对元素进行操作时是不能通知到视图更新的 可以考虑用数组本身的方法(如splice)去直接对数组进行操作  

2.angular项目里遇到的问题让人更加迷惑 响应式数组绑定的没有问题 当我去对对象数组进行一个排序操作时 只要不对数组的第一个元素进行操作就无法让视图更新 去网上找了很多资料 试了各种方法 包括使用$apply()以及detectChanges()强制更新都不行 最后在每次排序后都使用一下代码解决了问题

                                objtemp= {};

                                objtemp = angular.copy(arr[0])

                                arr.splice(0,1,objtemp)        

最后个人的出结论(猜测) js的数组应该跟c拥有差不多的机制 (数组第一个元素的地址值就是数组储存的地址值) 所以当我们不去对数组首元素进行操作并且项目中引用比较复杂时 可能导致地址值不变从而引起响应式数据没有发生改变 不更新的错误 (根据同事反映他在vue中也遇到过)并且网上很难找到相关解答 所以以上为个人猜测

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值