Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Safari vs Chrome中使用trackBy进行变化检测_Javascript_Angular_Safari - Fatal编程技术网

Javascript 在Safari vs Chrome中使用trackBy进行变化检测

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:图像不会刷新

我有一个与firebase连接的应用程序,只要对象发生任何变化,它就会获取整个对象

假设我有这样一个对象:

{
    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),而不是分配整个新对象,你可以尝试
只推送新项目,然后,您可能会避免重新加载图像推送新对象不是问题,但更新现有对象是问题所在。