Javascript 在Safari vs Chrome中使用trackBy进行变化检测
我有一个与firebase连接的应用程序,只要对象发生任何变化,它就会获取整个对象 假设我有这样一个对象:Javascript 在Safari vs Chrome中使用trackBy进行变化检测,javascript,angular,safari,Javascript,Angular,Safari,我有一个与firebase连接的应用程序,只要对象发生任何变化,它就会获取整个对象 假设我有这样一个对象: { count: 0, media: [{ src: 'http://placehold.it/350x150' }, { src: 'http://placehold.it/350x250' }] }; 每当计数增加时,我都会从后端以相同的src值获取整个对象。 以下是数据与视图绑定时发生的情况: Chrome:图像不会刷新
{
count: 0,
media: [{
src: 'http://placehold.it/350x150'
}, {
src: 'http://placehold.it/350x250'
}]
};
每当计数增加时,我都会从后端以相同的src
值获取整个对象。
以下是数据与视图绑定时发生的情况:
- Chrome:图像不会刷新,因为它是相同的
。(预期行为)src
- Safari:每次分配新对象时,图像都会重新加载
trackBy:media?.src
,但得到了相同的结果
这是Angular的trackBy的问题还是Safari的工作原理
检查此项。这里的问题是
trackBy:Object?.property
已被弃用,使用跟踪功能trackBy:trackByFn
效果非常好
虽然我认为Chrome比Safari更能优雅地处理DOM变化。如果两种浏览器的行为不同,那么我猜这是浏览器的行为,而不是库(Angular2),而不是分配整个新对象,你可以尝试
只推送新项目,然后,您可能会避免重新加载图像推送新对象不是问题,但更新现有对象是问题所在。