angular 图片缓存服务2.0

 

改变:合二为一

function(data,status){
    imageCache2.getPic(data.imageid,
        AmApp.config.Merchant).then(function(result){
            $scope.merchantDt.imageid = result;
        })
    imageCache2.getPicList(data["ticketlist"],"imageid",AmApp.config.Merchant)
    .then(function(){
        $scope.ticketlist = data.ticketlist;
        $scope.querycount = data.querycount;
        console.log($scope.ticketlist);

    });

}
View Code

 

.factory('imageCache2',function($q, $cordovaFile, $cordovaFileTransfer){
//    =================================================
//        图片缓存体系($q, $cordovaFile, $cordovaFileTransfer)
//        imageCache2.createPath()
//        imageCache2.getPic(file, typeUrl, defaultUrl)
//        imageCache2.getPicList(list,key,typeUrl,defaultUrl)
//    =================================================
    
        var 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;
        }
        
//        查询图片列表
        var imgDeal = function(item, key, typeUrl, callback, defaultUrl){
//            file = item[key]
            getPic(item[key], typeUrl, defaultUrl).then(function(result) {
                item[key] = result;
                callback.call(this);
            });
        }
        
        
        return {
//            getPic: function(file, typeUrl, defaultUrl){},
            getPic: getPic,
            getPicList: 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;
            },
            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-11 13:44  alan-alan  阅读(688)  评论(0编辑  收藏  举报