3

我一直在玩一个 GUI for boom,今天我想我会添加图像的延迟加载。GUI 是用 AngularJS 构建的。这是加载所有图像的工作版本的要点:https ://gist.github.com/brock/6724161

这是我添加延迟加载的最新版本:https ://gist.github.com/brock/6746909 现在它只显示图像的占位符,但它们从不加载。

有趣的是,如果我打开 Chrome 控制台,我可以输入$('img.lazy').lazyload()它并按预期运行,但我还没有确定为什么它不会在页面加载时触发。

4

1 回答 1

4

这是因为在$('img.lazy').lazyload()执行时(window.onload 事件),AngularJS 没有将视图链接到您的模型,甚至还没有获取它(get .boom -> $scope.lists)。

要使其成为 AngularJS 方式,您应该对任何 DOM 操作使用指令(即,使用操作 DOM 的 jQuery 插件)。

我添加了指令,请参见: http: //plnkr.co/edit/eOXp9eQKIukCDNR90xje

我在 $timeout 中执行了lazyload() 函数,因为必须首先插入 img DOM 元素上的属性({{ url }} 填充)才能使lazyload() 正常工作。

于 2013-09-28T22:10:21.847 回答