controller.js 12.1 KB
/**
 *
 */
define(
    'mk7/controller',
    [
        'mk7/view',
        'mk7/utils',
        'mk7/jweixin'
    ],
    function(view, utils, jweixin) {
        
        var $$ = Dom7;

        var controller = function(){
            this.app = {},
            this.view =  '',
            this.params = '',
            this.renderResult = '',
            this.init = function (app) {
                this.app = app;
            },
            this.render = function(datas){
                try {
                    this.beforeRender();
                    var v = new view();
                    var r = v.render(this.view, datas);
                    $$('.view-main').html(r);
                    this.bindEvents();
                    this.afterRender();
                } catch (e) {
                    console.log(e);
                }
            },
            this.beforeRender = function(){},//抽象方法,子类实现
            this.afterRender = function(){},//抽象方法,子类实现
            this.bindEvents = function(){},//抽象方法,子类实现
            this.beforeRun = function(){},//抽象方法,子类实现
            this.afterRun = function(){},//抽象方法,子类实现
            this.run = function(){},//抽象方法,子类实现
            this.showIndicator = function(){
                var e = $$('#ui-loading');
                if(0 == e.length){
                    if(this.app){
                        this.app.showIndicator();
                    }
                }
            },
            this.setPageTitle = function(title){
                var pageTitle = $$('title');
                if (pageTitle <1) {
                    var t = $$('<title>'+ title +'</title>');
                    $$('head').append(t)
                } else {
                    pageTitle.html(title)
                }
            },
            this.hideIndicator = function(){
                var e = $$('#ui-loading');
                if(0 == e.length){
                    if(this.app){
                        this.app.hideIndicator();
                    }
                }
            },
            this.csrf = function(data){
                return utils.csrf(data);
            },
            this.initJweixinMenuShare = function(params){
                jweixin.config({
                    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                    appId: params.appid, // 必填,公众号的唯一标识
                    timestamp: params.timestamp, // 必填,生成签名的时间戳
                    nonceStr: params.noncestr, // 必填,生成签名的随机串
                    signature: params.signature,// 必填,签名,见附录1
                    jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage','hideAllNonBaseMenuItem','updateAppMessageShareData', 'updateAppMessageShareData','chooseImage','previewImage','uploadImage', 'getLocalImgData','openLocation','getLocation','scanQRCode'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
                });
                jweixin.ready(function () {
                    // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,
                    // config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。
                    // 对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
                    //分享到朋友圈
                    jweixin.onMenuShareTimeline({
                        title: params.title, // 分享标题
                        desc: params.desc, // 分享标题//params.DESC
                        link: params.user_bridge_url, // 分享链接
                        imgUrl: params.icon, // 分享图标
                        success: function () {
                            // 用户确认分享后执行的回调函数
                        },
                        cancel: function () {
                            // 用户取消分享后执行的回调函数
                        }
                    });
                    //分享给朋友
                    jweixin.onMenuShareAppMessage({
                        title: params.title, // 分享标题
                        desc: params.desc, // 分享标题//params.DESC
                        link: params.user_bridge_url, // 分享链接
                        imgUrl: params.icon, // 分享图标
                        type: 'link', // 分享类型,music、video或link,不填默认为link
                        success: function () {
                            // 用户确认分享后执行的回调函数
                        },
                        cancel: function () {
                            // 用户取消分享后执行的回调函数
                        }
                    });

                    jweixin.onMenuShareQQ({
                        title: params.title, // 分享标题
                        desc: params.desc, // 分享描述
                        link: params.user_bridge_url, // 分享链接
                        imgUrl: params.icon, // 分享图标
                        success: function () {
                            // 用户确认分享后执行的回调函数
                        },
                        cancel: function () {
                            // 用户取消分享后执行的回调函数
                        }
                    });
                    jweixin.updateAppMessageShareData({
                        title: params.title, // 分享标题
                        desc: params.desc, // 分享描述
                        link: params.user_bridge_url, // 分享链接
                        imgUrl: params.icon, // 分享图标
                        success: function () {
                            // 设置成功
                        }
                    })

                    jweixin.updateTimelineShareData({
                        title: params.title, // 分享标题
                        link: params.user_bridge_url, // 分享链接
                        imgUrl: params.icon, // 分享图标
                        success: function () {
                            // 设置成功
                        }
                    })
                });
            },
            this.hideAllNonBaseMenuItem = function(params){
                jweixin.config({
                    debug: false,
                    appId: params.appid, // 必填,公众号的唯一标识
                    timestamp: params.timestamp, // 必填,生成签名的时间戳
                    nonceStr: params.noncestr, // 必填,生成签名的随机串
                    signature: params.signature,// 必填,签名,见附录1
                    jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage','updateAppMessageShareData', 'updateAppMessageShareData','hideAllNonBaseMenuItem', 'showAllNonBaseMenuItem','chooseImage','previewImage','uploadImage', 'getLocalImgData','openLocation','getLocation','scanQRCode'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
                });
                jweixin.ready(function () {
                    jweixin.hideAllNonBaseMenuItem();
                });
            },
                this.weixinAllShare = function(params) {

                    jweixin.ready(function () {
                        // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,
                        // config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。
                        // 对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
                        //分享到朋友圈

                        jweixin.onMenuShareTimeline({
                            title: params.title, // 分享标题
                            desc: params.desc, // 分享标题//params.DESC
                            link: params.user_bridge_url, // 分享链接
                            imgUrl: params.icon, // 分享图标
                            success: function () {
                                // 用户确认分享后执行的回调函数
                            },
                            cancel: function () {
                                // 用户取消分享后执行的回调函数
                            }
                        });
                        //分享给朋友
                        jweixin.onMenuShareAppMessage({
                            title: params.title, // 分享标题
                            desc: params.desc, // 分享标题//params.DESC
                            link: params.user_bridge_url, // 分享链接
                            imgUrl: params.icon, // 分享图标
                            type: 'link', // 分享类型,music、video或link,不填默认为link
                            success: function () {
                                // 用户确认分享后执行的回调函数
                            },
                            cancel: function () {
                                // 用户取消分享后执行的回调函数
                            }
                        });

                        jweixin.onMenuShareQQ({
                            title: params.title, // 分享标题
                            desc: params.desc, // 分享描述
                            link: params.user_bridge_url, // 分享链接
                            imgUrl: params.icon, // 分享图标
                            success: function () {
                                // 用户确认分享后执行的回调函数
                            },
                            cancel: function () {
                                // 用户取消分享后执行的回调函数
                            }
                        });

                        jweixin.updateAppMessageShareData({
                            title: params.title, // 分享标题
                            desc: params.desc, // 分享描述
                            link: params.user_bridge_url, // 分享链接
                            imgUrl: params.icon, // 分享图标
                            success: function () {
                                // 设置成功
                            }
                        })

                        jweixin.updateTimelineShareData({
                            title: params.title, // 分享标题
                            link: params.user_bridge_url, // 分享链接
                            imgUrl: params.icon, // 分享图标
                            success: function () {
                                // 设置成功
                            }
                        })

                    });
                },
            this.showAllNonBaseMenuItem = function(params){
                jweixin.config({
                    debug: false,
                    appId: params.appid, // 必填,公众号的唯一标识
                    timestamp: params.timestamp, // 必填,生成签名的时间戳
                    nonceStr: params.noncestr, // 必填,生成签名的随机串
                    signature: params.signature,// 必填,签名,见附录1
                    jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage','updateAppMessageShareData', 'updateAppMessageShareData','hideAllNonBaseMenuItem', 'showAllNonBaseMenuItem','chooseImage','previewImage','uploadImage', 'getLocalImgData','openLocation','getLocation','scanQRCode'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
                });
                jweixin.ready(function () {
                    jweixin.showAllNonBaseMenuItem();
                });
            }
        };

        return controller;
    }
);