1. 程式人生 > >總結一下用面向物件寫法呼叫藉口

總結一下用面向物件寫法呼叫藉口

總結一下用面向物件寫法呼叫藉口

<script src="jquery.min.js"></script>
<script src="store.min.js"></script>
<script src="layer/layer.js"></script>
<script>
	//獲取連結引數
	function GetQueryString(name) {
		var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var arr = window.location.search.substr(1).match(reg); if (arr != null) { return decodeURIComponent(arr[2]) }; return null; }; var debug = GetQueryString('debug') ? GetQueryString('debug') : 'false'; //軟體版本 //正試地址 var stockDomain = "http://mapi.ktkt.com"; if (debug == 'true') { //測試地址 stockDomain =
"http://utest.mapi.ktkt.com"; } var token = GetQueryString('token'); //使用者token var origin = GetQueryString('origin'); var ajaxSengMode = !("WebSocket" in window ? true : false); // 標題切換 // $('.set_left').find('a').on('click', function (e) { // e.preventDefault(); // var url = $(this).attr("href");
// window.location.href = url + "?token=" + token + "&origin=" + origin + '&debug=' + debug; // return false; // }); var myPermissionInstance = new MyPermission({ token: token, origin: origin, debug: debug, apiUrl: stockDomain, advancedBrowser: ajaxSengMode }); console.log(myPermissionInstance); myPermissionInstance.Start();
</script>
!(function (win, $) {
    var myPermissionApi = function (options) {
        var domain = options.domain || '';
        var self = this;
        this.isBow = "WebSocket" in window ? true : false;
        this.Err = { "code": 500, "msg": "" };

        this.Error = function (code, msg) {
            var err = this.Err;
            err.code = code;
            err.msg = msg == "error" ? '網路不給力啊,請再次重新整理' : msg;
            return err;
        };
        //請求方式
        this.ajaxSendMode = function (url, args, funcOk, funcErr) {
            var self = this;
            if (!self.isBow) {
                self.ajaxSendModeJsonp(url, args, funcOk, funcErr);
                return;
            };
            $.ajax({
                type: 'post',
                url: url,
                dataType: 'json',
                data: args,
                success: function (json) {
                    funcOk(json);
                },
                error: function (errorThrown, textStatus) {
                    if (errorThrown.status === 911) {
                        var errInfo = JSON.parse(errorThrown.responseText);
                        funcErr && funcErr(self.Error(errInfo.code, errInfo.message));
                        return;
                    };
                    funcErr && funcErr(self.Error(errorThrown.status, errorThrown.responseText));
                }
            });
        };
        this.ajaxSendModeGet = function (url, args, funcOk, funcErr) {
            var self = this;
            if (!self.isBow) {
                self.ajaxSendModeJsonp(url, args, funcOk, funcErr);
                return;
            };
            $.ajax({
                type: 'get',
                url: url,
                dataType: 'json',
                data: args,
                cache:false,
                success: function (json) {
                    /* if (json.code && json.message && json.code != 200) {
                        funcErr && funcErr(self.Error(json.code, json.message));
                        return;
                    } */
                    funcOk(json);
                },
                error: function (errorThrown, textStatus) {
                    if (errorThrown.status === 911) {
                        var errIntext = errorThrown.responseText + '';
                        var error = errIntext.replace(/^(\w+)?\(|\)\;$/mg, '');
                        var errInfo = $.parseJSON(error);
                        if (errInfo.code == undefined) {
                            errInfo.code = '25000';
                        };
                        if (errInfo.message == undefined) {
                            errInfo.message = '沒有獲取到伺服器返回錯誤';
                        };
                        funcErr && funcErr(self.Error(errInfo.code, errInfo.message));
                    }
                }
            });
        };
        this.ajaxSendModeJsonp = function (url, args, funcOk, funcErr) {
            var self = this;
            $.ajax({
                type: 'get',
                url: url,
                dataType: 'jsonp',
                data: args,
                success: function (json) {
                    if (json.code && json.message && json.code != 200) {
                        funcErr && funcErr(self.Error(json.code, json.message));
                        return;
                    }
                    funcOk(json);
                },
                error: function (errorThrown, textStatus) {
                    if (errorThrown.status === 911) {
                        var errIntext = errorThrown.responseText + '';
                        var error = errIntext.replace(/^(\w+)?\(|\)\;$/mg, '');
                        var errInfo = $.parseJSON(error);
                        if (errInfo.code == undefined) {
                            errInfo.code = '25000';
                        };
                        if (errInfo.message == undefined) {
                            errInfo.message = '沒有獲取到伺服器返回錯誤';
                        };
                        funcErr && funcErr(self.Error(errInfo.code, errInfo.message));
                        return;
                    }
                }
            });
        };

        // 獲取我的許可權
        this.getMyPermissionArgs = { 'token': '', 'origin': '', 'version': '' };
        this.getMyPermissionReq = function (args, funcOk, funcErr) {
            var url = domain + "/permission/v1/info";
            var args = $.extend(self.getMyPermissionArgs, args);
            self.ajaxSendMode(url, args, funcOk, funcErr);
        };
    }

    var MyPermission = function (options) {
        var defaults = {
            token: "",
            origin: "",
            apiUrl: "", //地址
            advancedBrowser: false //是否為高階瀏覽器
        };

        this.classTitle = $('#classTitle'); // 課程名稱

        this.Err = { "code": 500, "msg": "" };
        this.Error = function (code, msg) {
            var err = this.Err;
            err.code = code;
            err.msg = msg == "error" ? '網路不給力啊,請再次重新整理' : msg;
            return err;
        };

        this.options = $.extend({}, defaults, options);
    };
    $.extend(MyPermission.prototype, {
        Start: function () {
            this.init();
        },
        init: function () {
            var self = this;
            this.Layer = win.layer;
            this.Store = win.store;
            this.myPermissionApi = new myPermissionApi({ "domain": this.options.apiUrl });
            //顯示許可權列表
            this.showPermissionListFunc();
            // 我的許可權
            this.getMyPermissionFunc();
        },

        // 我的許可權
        getMyPermissionFunc: function () {
            var self = this;
            var args = this.myPermissionApi.getMyPermissionArgs;
            args.token = this.options.token;
            args.origin = this.options.origin;
            args.version = this.Store.get('myPermissionListVersion#');

            this.myPermissionApi.getMyPermissionReq(args, function (data) {
                console.log(data);
                //更新快取
                if(data.refresh){
                    // 設定我的許可權快取
                    self.Store.set('myPermissionMap#', data.data);
                    // 設定版本號
                    self.Store.set('myPermissionListVersion#',data.version);
                    self.showPermissionListFunc();
                }
            }, function (err) {  
                //清除快取
                self.localStorageHandle();
                self.showPermissionListFunc();
                self.Layer.msg(err.msg);
            });
        },

        //顯示許可權列表
        showPermissionListFunc: function (){
            var myPermissionMap = this.Store.get('myPermissionMap#');
            // 快取不存在,返回
            if (!myPermissionMap) {
                this.classTitle.html('暫無');
                return;
            };
            this.classTitle.html('暫無');
        },
         //清除快取
        localStorageHandle: function () {
            var self = this;
            self.Store.remove('myPermissionMap#');
            self.Store.remove('myPermissionListVersion#')
        },
    });


    win['MyPermission'] = MyPermission;


})(window, jQuery);