AngularJS ng-repeat图像加载问题

时间:2014-03-19 03:51:05

标签: javascript angularjs angularjs-directive angularjs-ng-repeat image-loading

我最近开始在我的项目中使用AngularJS,并且我使用ngRepeat将动态数组中的缩略图加载到DIV中遇到了一个大问题。

由于我不会在这里解释整个应用程序,我将重现出现问题的孤立情况。

假设我有一个带有ngRepeat指令的图像标记,如下所示:

<img ng-repeat='n in [] | range: explorer.loadedLog.screenshotsNum' ng-src='getss.php?degenerated={{explorer.selectedLog}}&index={{n+1}}'>

假设range是一个自定义过滤器,它使用explorer.loadedLog.screenshotsNum(由AJAX请求修改的变量)元素生成数组,explorer.selectedLog是由AJAX请求修改的字符串。 我觉得这些信息几乎是不相关的,因为使用常见的动态数组测试它并遇到了同样的问题。

重点是:当 explorer.loadedLog.screenshotsNum explorer.selectedLog 发生变化时,必须加载所有新图像。

我有一个用于更改这些值的按钮。当我第一次点击它(在第一次加载时),它没问题。如果我等待加载所有图像并再次更改这些值,则新图像仍然可以加载而没有任何问题。但是,如果我更改它并再次更改之前所有图片都已加载,它将加载 ALL 剩下的图像然后开始加载当前必须的图像加载。

我的意思是,我不知道我是否清楚地解释了这一点,但我想如果我修改了这些变量,&#34;旧的&#34; 图像就会停止加载。但是,不知何故,它们仍然在背景中加载,如 DOM ,那些仍然在文档中的某些地方,而&#34; new&#34;图像&#39;加载延迟。我其实想要阻止这个&#34; old&#34;加载图像并开始加载&#34; new&#34;图片。我认为这与ngRepeat的工作方式有关,但我真的很想知道是否有办法在不改变的情况下解决这个问题。

如果我能解决这个问题,那么ngRepeat选择对我来说是最好的。但我仍然接受任何其他建议。

修改

我刚刚注意到显而易见的事情:当你设置&#34; src&#34;,它会向服务器发出请求,即使你删除/更改它也不会停止img src ,所以它与 ngRepeat 的工作方式无关,但实际上与<img>的工作方式有关。因此,根据我的需要, window.stop()完成了这项工作(因为我的应用程序对此没有任何限制),但我仍然想知道如果同时加载在页面上的任何其他图像,因为我无法简单地调用window.stop()。有一种方法可以防止加载<img>,因此我可以迭代容器内的所有<img>元素,阻止它们逐个加载?

1 个答案:

答案 0 :(得分:0)

您是否可以修改getss.php并将HTTP缓存标头添加到响应中?在设置src属性时,它不会更改尝试获取图像的浏览器,但它会从浏览器缓存中获取图像。

这应该有用:How to use HTTP cache headers with PHP