angularjs如何实现图片延迟加载?

 我来答
心置P枠9痛
2015-09-13 · TA获得超过148个赞
知道答主
回答量:165
采纳率:0%
帮助的人:65.9万
展开全部
jquery的做法是监听window.scroll,然后判断图片的位置,是否需要切换src属性,那么angular也一样,只是由于angular需要将DOM操作写在指令里面,所以需要自己去实现指令。
解决思路:
1,图片的src不要使用真实的地址,用一个属性保存在元素上
2,把所有需要使用延迟加载的图片放到一个数组中,
3,初始化的时候检查数组中的元素是否在可视范围内,可视范围内即加载
4,给window绑定滚动事件检查图片是否在可视范围内
5,加载完成的图片从队列中删除
趣事情
2016-01-14 · 知道合伙人互联网行家
趣事情
知道合伙人互联网行家
采纳数:517 获赞数:5452
电脑技术,软件开发。移动开发。网站建设相关专业知识。都可以提供解答和相关技术指导。

向TA提问 私信TA
展开全部
jquery的做法是监听window.scroll,然后判断图片的位置,是否需要切换src属性,那么angular也一样,只是由于angular需要将DOM操作写在指令里面,所以需要你自己去实现指令,大概思路如下;
全选复制放进笔记<lazyload>
<img data-source="real.png" src="holder.png" />
</lazyload>

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属性这一层就行了,只是这样会注册和图片一样多的事件回调。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式