场景下开发-angular 图片缓存服务

 

angular 服务

1.$q, imageCache

2.$q, $cordovaFile, $cordovaFileTransfer

 

服务调用

1.index.html 引入资源文件

2.controller 引入服务名称

3.调用服务

4.服务资源js文件可以自己调用自己

 

imageCache1.getPic(data.imageid,
AmApp.config.Merchant).then(
function(result) {
    $scope.merchantDt.imageid = result;
});
View Code
imageListCache1
.dealImageList(data["ticketlist"],"imageid",AmApp.config.Merchant)
.then(
function() {
    $scope.ticketlist = data.ticketlist;
    $scope.querycount = data.querycount;
    console.log($scope.ticketlist);

})
View Code

 

.factory('imageListCache1',function($q, imageCache){
    console.log('test')
    //=================================================
//        图片列表缓存($q, imageCache)
//        imageCache.createPath()
//        imageCache.getPic(file, typeUrl, defaultUrl)
    //=================================================
        var imgDeal = function(item, key, typeUrl, callback, defaultUrl){

            imageCache.getPic(item[key], typeUrl, defaultUrl).then(function(result) {
                item[key] = result;
                callback.call(this);
            });
        
        }
        
        return{
//            init: function(){},
            dealImageList: function(list, key, typeUrl, defaultUrl) {

                var q = $q.defer();
                var deal = 0;
                for (var i = 0; i < list.length; i++) {
                    imgDeal(list[i], key, typeUrl, function() {
                        deal++;
                        if (deal == list.length) {
                            q.resolve('success');
                        }
                    }, defaultUrl);
                }
                return q.promise;
            
            }
//            END
        }
    })
    .factory('imageCache1',function($q, $cordovaFile, $cordovaFileTransfer){
    //=================================================
//        图片缓存体系($q, $cordovaFile, $cordovaFileTransfer)
//        imageCache.createPath()
//        imageCache.getPic(file, typeUrl, defaultUrl)
    //=================================================
        
        return {
//            init: function(){},
            getPic: function(file, typeUrl, defaultUrl){
                var q = $q.defer();
                var icDefaultUrl = "img/merchant/noImage.png";
                if (defaultUrl != undefined && defaultUrl != "") {
                    icDefaultUrl = defaultUrl;
                }
                
                if (!file) {
                    q.resolve(icDefaultUrl);
                }
                if (!cordova.file) {
                    // 非手机环境,直接返回连接
                    var
                    url = AmApp.config.ServiceImagePath + typeUrl
                            + file;
                    q.resolve(url);
                } else {
                    var path = "";
                    if (ionic.Platform.isAndroid()) {
                        path = cordova.file.externalDataDirectory;
                    } else if (ionic.Platform.isIOS()) {
                        path = cordova.file.dataDirectory;
                    }

                    path += "img/" + typeUrl;
                    $cordovaFile.readAsDataURL(path, file).then(
                            function(result) {
                                q.resolve(result);
                            },
                            function() {
                                // 图片不存在或其他异常,返回拼接的图片url地址并下载图片
                                String
                                url = AmApp.config.ServiceImagePath
                                        + typeUrl + file;
                                var options = {};
                                var trustHosts = true;
                                $cordovaFileTransfer.download(url,
                                        path + file, options,
                                        trustHosts).then(
                                        function(result) {
//                                            q.resolve(url);
                                        }, function(err) {
//                                            q.resolve(url);
                                        });
                                q.resolve(url);
                            });
                }
                return q.promise;
            
                
            },
            createPath: function() {
                if (!cordova.file) {
                    // 非手机环境,不做处理
                    return;
                }
                var path = "";
                if (ionic.Platform.isAndroid()) {
                    path = cordova.file.externalDataDirectory;
                } else if (ionic.Platform.isIOS()) {
                    path = cordova.file.dataDirectory;
                }

                var dir = "img";

                $cordovaFile.createDir(path, dir, false).then(
                        function() {
                            path += dir + "/";
                            dir = "merchant";
                            $cordovaFile
                                    .createDir(path, dir, false)
                                    .then(function() {
                                    }, function() {
                                    });
                            dir = "module";
                            $cordovaFile
                                    .createDir(path, dir, false)
                                    .then(function() {
                                    }, function() {
                                    });
                        },
                        function() {
                            path += dir + "/";
                            dir = "merchant";
                            $cordovaFile
                                    .createDir(path, dir, false)
                                    .then(function() {
                                    }, function() {
                                    });
                            dir = "module";
                            $cordovaFile
                                    .createDir(path, dir, false)
                                    .then(function() {
                                    }, function() {
                                    });
                        });

            },
//        end
        }
        
        
    })

 

posted @ 2017-08-10 12:35  alan-alan  阅读(1017)  评论(0编辑  收藏  举报