扫码关注官方订阅号
写一个移动端显示图片列表的web,以往都是使用jQuery的延迟加载插件来实现这一功能的,但是现在要求不能使用jQuery以及其他插件,仅使用angularjs实现这个功能。图片的路径是存储在一个json中,通过读取json的数据ng-repeat出来的。 请问有什么好的解决方法?
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属性这一层就行了,只是这样会注册和图片一样多的事件回调
应该是用$timeout来延迟加载
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
jquery的做法是监听window.scroll,然后判断图片的位置,是否需要切换src属性,那么angular也一样,只是由于angular需要将DOM操作写在指令里面,所以需要你自己去实现指令,大概思路如下;
如果希望效率像jquery一样,只有一个监听,那么这个lazyLoad的逻辑需要考虑如何查询IMG
如果希望简单省事,指令直接写在img属性这一层就行了,只是这样会注册和图片一样多的事件回调
应该是用$timeout来延迟加载