当前位置 : 主页 > 网络编程 > JavaScript >

angular-service.js

来源:互联网 收集:自由互联 发布时间:2021-06-30
angular-service.js /** * 使用:引入该JS,再angular.module('..',['sfService']) * 然后在Controller中注入'sfHttp' * 例子:controller('..',function (sfHttp){}); */var _sfService = angular.module('sfService',[]);_sfService.factory('sf
angular-service.js
/**
 * 使用:引入该JS,再angular.module('..',['sfService'])
 *     然后在Controller中注入'sfHttp'
 * 例子:controller('..',function (sfHttp){});
 */
var _sfService = angular.module('sfService',[]);
_sfService.factory('sfHttp',['$http',function($http){
    //公共参数获取,直接传入搜索的值就行,sfHttp.getProValue('dns',function (data){});
    return {
        fromGet:function (data) {
            var data = data || {};//仿照jQuery,为JSON格式
            return $http({
                method: 'GET',
                params:data.data,
                url: data.url
            }).then(function (result) {
                if(typeof data.success === "function"){
                    if(result.data.data){
                        data.success(result.data.data,result);
                    }else if(result.data){
                        data.success(result.data,result);
                    }else{
                        data.success(result);
                    }
                }
            },function (errMsg) {
                typeof data.error === "function" && data.error(errMsg);
            });
        },
        fromPost:function (data) {
            var data = data || {};//仿照jQuery,为JSON格式
            data.params = data.params?false:true;
            return $http({
                url: data.url,
                method: 'POST',
                data:data.data,
                params:data.params || data.data,
                headers : data.headers,
            }).then(function (result) {
                if(typeof data.success === "function"){
                    if(result.data.data){
                        data.success(result.data.data,result);
                    }else if(result.data){
                        data.success(result.data,result);
                    }else{
                        data.success(result);
                    }
                }
            },function (errMsg) {
                typeof data.error === "function" && data.error(errMsg);
            });
        },
        publicParam: function(proKey, suFn,erFn) {
            //获取公共参数
            return this.fromPost({
                url:this.getRootPath()+'/common/getPageData',
                data:{proKey:proKey},
                success:function (data) {
                    var flay = true;
                    angular.forEach(data.rows,function (v) {
                        if(v.proKey === proKey){
                            typeof suFn === 'function' && suFn(v.proValue);
                            flay = false;
                            return false;
                        }
                    });
                    flay && typeof erFn === 'function' && erFn(data);
                },
                error:function (msg) {
                    typeof erFn === 'function' && erFn(msg);
                }
            });
        },
        getRootPath:function () {
            return _sfService.getRootPath();
        },
        getCmdbPath:function (suFn,erFn) {
           return this.fromGet({
                url: _sfService.getRootPath()+'/common/findByKey/vishnu_cmdb_url',
                success:function (data) {
                    typeof suFn === "function" && suFn(data);
                },
                error:function (msg) {
                    typeof erFn === "function" && erFn(msg);
                    console.info('获取CMDB地址失败!');
                }
            });
        },
        getRemotePath:function () {
            return _sfService.getRootPath();
        }
    }
}])
.factory('commonService',['$rootScope',function($rootScope){
	return {
		getEnvTitle:function(env){
        	var envTitle='';
        	if(env=='PRD'){
        		envTitle='生产&容灾';
        	}else if(env=='SIT'){
        		envTitle='测试';
        	}else if(env=='STG'){
        		envTitle='准生产';
        	}else if(env=='DR'){
                envTitle='容灾';
            }
        	return envTitle;
        },
        queryCommonConfig:function(key){
            var commonConfig='';
            restGet($rootScope.contextPath+"/common/findByKey/"+key,function(data){
                commonConfig=data;
            },function(data){
                 $rootScope.createAlert({html:'您所访问的数据库中不存在'+key+'对应这个字段,请添加了之后再操作!',div:$("body"),state:"alert-danger"});
            })
            return commonConfig;
        }
	}
}]);

_sfService.rootPath = null;//|| 'http://10.202.78.5:8080/vishnu-web';//为以后跨前后端分离留接口

_sfService.remotePath = 'http://10.202.78.5:8080/vishnu-web';

//获取项目路径
_sfService.getRootPath = function () {
    if (_sfService.rootPath) {
        return _sfService.rootPath;
    } else {
        return _sfService.rootPath =
            (window.document.location.href.substring(0,
                window.document.location.href
                    .indexOf(window.document.location.pathname))
            + window.document.location.pathname
                .substring(0, window.document.location.pathname
                        .substr(1).indexOf('/') + 1));
    }
}

_sfService.provider('vishnu',[function () {//能注入config()的参数中去,例子:vishnuProvider
    this.rootPath = _sfService.getRootPath();
    this.sayTime = new Date();
    this.sayHello = function (name) {
        return 'Hello '+name;
    }

    this.$get = function ($http) {
        return {
            'rootPath':this.rootPath,
            'sayTime':this.sayTime,
            'sayHello':this.sayHello,
            'sfHttp':function (data) {//在config中不存在该函数,在run等方法中存在
                $http({
                    method: 'GET',
                    params: data.data,
                    url: data.url
                }).then(function (result) {
                    if (typeof data.success === "function") {
                        if (result.data.data) {
                            data.success(result.data.data, result);
                        } else if (result.data) {
                            data.success(result.data, result);
                        } else {
                            data.success(result);
                        }
                    }
                }, function (errMsg) {
                    typeof data.error === "function" && data.error(errMsg);
                });
            },
        };
    }
}]);

_sfService.provider('vishnu2',{//不能注入config中去,可以注入controller,如vishnu2
    $get:function () {
        return {
            sayTime:new Date(),
            sayHello:'Hello World Angular!'
        }
    }
})
网友评论