84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
写一个移动端显示图片列表的web,以往都是使用jQuery的延迟加载插件来实现这一功能的,但是现在要求不能使用jQuery以及其他插件,仅使用angularjs实现这个功能。图片的路径是存储在一个json中,通过读取json的数据ng-repeat出来的。 请问有什么好的解决方法?
https://github.com/Treri/me-lazyloadhttps://github.com/Treri/me-lazyimg
两个功能差不多, 前面那个是放在document中滚动的, 后面那个是可以设置在一个element中滚动的
思路: 1,图片的src 不要使用真实的地址,用一个属性保存在元素上 2,把所有需要使用延迟加载的图片放到一个数组中, 3,初始化的时候检查数组中的元素是否在可视范围内,可视范围内即加载 4,给 window 绑定滚动事件检查图片是否在可视范围内 5,加载完成的图片从队列中删除
原文链接:https://www.npmjs.com/package/angular-imglazyload
jquery的做法是监听window.scroll,然后判断图片的位置,是否需要切换src属性,那么angular也一样,只是由于angular需要将DOM操作写在指令里面,所以需要你自己去实现指令,大概思路如下;
html<lazyload> <img data-source="real.png" src="holder.png" /> </lazyload>
html
<lazyload> <img data-source="real.png" src="holder.png" /> </lazyload>
javascriptangular.module('yourapp').directive('lazyload', function () { return { restrict: 'EA', replace: false, link: function (scope, element, attrs) { angular.element(window).on('scroll', function() { // 计算距离 切换img属性 }); } }; });
javascript
angular.module('yourapp').directive('lazyload', function () { return { restrict: 'EA', replace: false, link: function (scope, element, attrs) { angular.element(window).on('scroll', function() { // 计算距离 切换img属性 }); } }; });
如果希望效率像jquery一样,只有一个监听,那么这个lazyLoad的逻辑需要考虑如何查询IMG 如果希望简单省事,指令直接写在img属性这一层就行了,只是这样会注册和图片一样多的事件回调
http://afklm.github.io/ng-lazy-image/ 这个module很多人都做好了 这个链接的看起来不错 使用很方便
应该是用$timeout来延迟加载
https://github.com/Treri/me-lazyload
https://github.com/Treri/me-lazyimg
两个功能差不多, 前面那个是放在document中滚动的, 后面那个是可以设置在一个element中滚动的
思路:
1,图片的src 不要使用真实的地址,用一个属性保存在元素上
2,把所有需要使用延迟加载的图片放到一个数组中,
3,初始化的时候检查数组中的元素是否在可视范围内,可视范围内即加载
4,给 window 绑定滚动事件检查图片是否在可视范围内
5,加载完成的图片从队列中删除
原文链接:https://www.npmjs.com/package/angular-imglazyload
jquery的做法是监听window.scroll,然后判断图片的位置,是否需要切换src属性,那么angular也一样,只是由于angular需要将DOM操作写在指令里面,所以需要你自己去实现指令,大概思路如下;
如果希望效率像jquery一样,只有一个监听,那么这个lazyLoad的逻辑需要考虑如何查询IMG
如果希望简单省事,指令直接写在img属性这一层就行了,只是这样会注册和图片一样多的事件回调
http://afklm.github.io/ng-lazy-image/ 这个module很多人都做好了 这个链接的看起来不错 使用很方便
应该是用$timeout来延迟加载