推荐一个简单的 Angular 图片加载插件:vgSrc,插件根据图片资源的不同加载状态,显示不同图片,亲测兼容IE-8。

使用

  1. 推荐使用 bower 加载:
bower install vgSrc --save
并引入:
<script src="/bower_components/vgSrc/dist/vgSrc.min.js"></script>
  1. 也可下载源码,在页面引入:
<script src="/libs/vgSrc/dist/vgSrc.min.js"></script>}

example

  1. 简单实例
<img vg-src="ctrl.currentImg" alt="">
  1. 添加样式
<img vg-src="ctrl.currentImg" loading-cls="loading" error-cls="error" empty-cls="empty" loaded-cls="load" alt="">
  1. 监听事件
<img vg-src="ctrl.currentImg" loading-cls="loading" error-cls="error" empty-cls="empty" loaded-cls="load" alt="">

更多实例,请查阅 sample/index.html 文件

API

vgSrcConfigProvider

配置接口:

vgSrcConfigProvider.$set(config)

example:

ng.module('vgSrc.sample', ['vgSrc']).config([
'vgSrcConfigProvider',
function(vgSrcConfigProvider) {
vgSrcConfigProvider.$set({
debug: false,
error: 'http://ico.ooopic.com/iconset01/status-icons/gif/99589.gif',
onBegin: function($e) {
// console.log('start load:' + $e.src);
},
onError: function($e) {
// console.log('failure load:' + $e.src);
},
onLoad: function($e) {
// console.log('complete load:' + $e.src);
}
});
}
]);

vgSrc (directive)

vgSrc 指令用法与 ngSrc 指令类型。指令支持 angular 表达式,如.

<img vg-src="ctrl.currentImg" alt="">
<img vg-src="'/img/someImage.png'" alt="">

配置项

替换图片

vgSrc 支持 loading、error、empty 状态下的图片替换:

  1. vgSrc 指令求值结果为空时(null、undefined、空字符串),将显示 empty 值指定的图片
  2. 开始加载时,将显示 loading 值指定的图片
  3. 加载出错时,将显示 error 值指定的图片
  4. 加载成功后,正常显示图片

事件

vgSrc 支持 onBegin、onError、onLoad 事件,可通过 vgSrcConfigProvider 、 vgSrc 两种方式注册不同类型的事件处理器:

  1. 通过 vgSrcConfigProvider 方式注册的监听器将做为默认的事件监听器,事件参数为:$e{src:''},用法如:
onBegin:function($e){
console.log($e.src);
}
  1. 通过 vgSrc 方式注册的监听器将覆盖默认的事件监听器,事件参数为:$e{src:''},用法如:
<img vg-src="ctrl.currentImg" on-begin="ctrl.log(src)" alt="">

样式class

vgSrc 支持 loadingCls、loadedCls、errorCls、emptyCls 样式,可通过 vgSrcConfigProvider 、 vgSrc 两种方式注册 class 值:

  1. 通过 vgSrcConfigProvider 方式注册的 class 将做为默认的 class ,用法如:
errorCls:'errorClass'
  1. 通过 vgSrc 方式注册的 class 将做为此image特定的 class,用法如:
<img vg-src="ctrl.currentImg" error-cls="errorClass" alt="">

** 注意,class 属性不支持angular表达式 —— 你只能传递简单的字符串 **

配置项汇总

  {
// 启动调试模式
debug: false, // 图片加载中的替换显示图片
loading: '/loading.jpg', // 图片加载中的样式 class
loadingCls: '', // 图片加载完成的样式 class
loadedCls: '', // 图片加载失败的替换显示图片
error: '/error.jpg', // 图片加载失败的样式 class
errorCls: '', // 图片值为空时的替换显示图片
empty: '', // 图片值为空时的样式 class
emptyCls: '', // 资源开始加载事件
'onBegin': ng.noop, // 资源加载出错事件
'onError': ng.noop, // 资源加载完毕事件
'onLoad': ng.noop
}

兼容性

目前兼容主流浏览器及ie8

推荐一个 angular 图像加载插件的更多相关文章

  1. Vue实现一个图片懒加载插件(转载)

    Vue是可以自定义指令的,最近学习过程中遇见了一个需要图片懒加载的功能,最后参考了别人的代码和思路自己重新写了一遍.以下将详细介绍如何实现自定义指令v-lazyload. 先看如何使用这个指令: &l ...

  2. [jQuery插件]手写一个图片懒加载实现

    教你做图片懒加载插件 那一年 那一年,我还年轻 刚接手一个ASP.NET MVC 的 web 项目, (C#/jQuery/Bootstrap) 并没有做 web 的经验,没有预留学习时间, (作为项 ...

  3. jQuery延迟加载(懒加载)插件 – jquery.lazyload.js-Web前端(W3Cways.com) - Web前端学习之路

    Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预 ...

  4. jQuery图片懒加载插件jquery.lazyload.js使用实例注意事项说明

    jQuery图片懒加载插件jquery.lazyload.js使用实例注意事项说明 jquery.lazyload.js是一个用JavaScript编写的jQuery插件.它可以延迟加载长页面中的图片 ...

  5. jQuery懒加载插件jquery.lazyload.js使用说明实例

    jQuery懒加载插件jquery.lazyload.js使用说明实例很多网站都会用到‘图片懒加载’这种方式对网站进行优化,即延迟加载图片或符合某些条件才开始加载图片.懒加载原理:浏览器会自动对页面中 ...

  6. 从零开始实现ASP.NET Core MVC的插件式开发(六) - 如何加载插件引用

    标题:从零开始实现ASP.NET Core MVC的插件式开发(六) - 如何加载插件引用. 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/1171 ...

  7. 图片懒加载插件lazyload.js详解

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  8. 【SpringBoot 基础系列】实现一个自定义配置加载器(应用篇)

    [SpringBoot 基础系列]实现一个自定义配置加载器(应用篇) Spring 中提供了@Value注解,用来绑定配置,可以实现从配置文件中,读取对应的配置并赋值给成员变量:某些时候,我们的配置可 ...

  9. 原生JS下拉加载插件分享。

    无聊写了一个JS下拉加载插件,有需要的可以下载. // 使用 // new ManDownLoad("#ul","json/load.json",functio ...

随机推荐

  1. SQL Server 2008 R2——VC++ ADO 操作 参数化查询

    ==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...

  2. oracle归档日志写满错误解决方法

    最近一年,手头上负责的项目要部署到很多个地方,由于项目组里没有人对oracle比较熟悉,只能给自己增加一个DBA的角色了.由于短时间内要部署很多单位,备份策略没有设置好,结果过了一个月,用户报告程序开 ...

  3. js实现(全选)多选按钮

    第一种,全部选中: <html> <head> <title>复选框checked属性</title> <script language=&quo ...

  4. matchesSelector及低版本IE中对该方法的实现

    matchesSelector用来匹配dom元素是否匹配某css selector.它为一些高级方法的实现提供了基础支持,比如事件代理,parent, closest等. W3C在2006年就提出了该 ...

  5. Andorid 内存溢出与内存泄露,几种常见导致内存泄露的写法

    内存泄露,大部分是因为程序的逻辑不严谨,但是又可以跑通顺,然后导致的,内存溢出不会报错,如果不看日志信息是并不知道有泄露的.但是如果一直泄露,然后最终导致的内存溢出,仍然会使程序挂掉.内存溢出大部分是 ...

  6. php redis 获取指定前缀的所有key

    php redis 获取指定前缀的所有key 以laravel框架为例: $key = $this->redis->keys('db:shipping:shippingId:' . &qu ...

  7. iBus

    0.闲言 闲来无事,重新玩玩Ubuntu,于是先把Ubuntu13.04删了(为什么是13.04?我也不知道)翻出14.04U盘安装,还算顺利,就是不知道为什么DiskGenius为什么一直提示分区表 ...

  8. linux多线程同步pthread_cond_XXX条件变量的理解

    在linux多线程编程中,线程的执行顺序是不可预知的,但是有时候由于某些需求,需要多个线程在启动时按照一定的顺序执行,虽然可以使用一些比较简陋的做法,例如:如果有3个线程 ABC,要求执行顺序是A-- ...

  9. Listview的点击事件

    上篇文章总结了如何自定义listview的显示内容,然而listview不能只是提供显示功能,还必须能够点击它显示一些东西: listView.setOnItemClickListener(new O ...

  10. UIView.frame的骗局

    如果你刚刚开始接触IOS编程, 刚刚接触UIKit, 肯定会被 frame, bounds, center, layer.anchorPoint, layer.position 这些乱七八糟得属性折腾 ...