Simple imgcache.js wrapper for AngularJS, can be user with Ionic/Cordova/Phonegap.
Install via bower
bower install --save angular-imgcache.js
Link library and dependencies
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/imgcache.js/js/imgcache.js"></script>
<script src="bower_components/angular-imgcache.js/angular-imgcache.js"></script>
Load module
angular.module('MyApp', [
'ImgCache'
])
You can override imgcache.js default options in Angulars config section.
.config(function(..., ImgCacheProvider) {
// set single options
ImgCacheProvider.setOption('debug', true);
ImgCacheProvider.setOption('usePersistentCache', true);
// or more options at once
ImgCacheProvider.setOptions({
debug: true,
usePersistentCache: true
});
// ImgCache library is initialized automatically,
// but set this option if you are using platform like Ionic -
// in this case we need init imgcache.js manually after device is ready
ImgCacheProvider.manualInit = true;
...
});
If you are using platform like Ionic, you have to init ImgCache manually.
Note: you must set ImgCacheProvider.manualInit = true;
as in example above.
.run(function($ionicPlatform, ImgCache) {
$ionicPlatform.ready(function() {
ImgCache.$init();
});
});
You can init library manually in other patforms via "deviceready" callback like this:
<body onload="onLoad()">
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady() {
ImgCache.$init();
}
(Thx @emps for this note in #1)
Access imgcache.js and its original methods in your components via promise to make sure that imgcache.js library is already initialized
.controller('MyCtrl', function($scope, ImgCache) {
ImgCache.$promise.then(function() {
ImgCache.cacheFile('...');
});
});
Angular-imgcache.js comes with directive, which first looks into cache for an image. If not present, it downloads image, then stores in cache and uses it.
We can set src of an image with ng-src
attribute (do NOT use the src
attribute).
<img img-cache ng-src="{{imgUrl}}" />
Or set elements background-image
with bg-img-src
attribute.
<div img-cache bg-img-src="{{imgUrl}}" ></div>