博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
angularJs按需加载代码(未验证)
阅读量:6819 次
发布时间:2019-06-26

本文共 2290 字,大约阅读时间需要 7 分钟。

一网友写的AngularJs按需加载代码,但未验证,放着备用。
 
application.config(
               function($routeProvider) {
                 $routeProvider.
                    when('/:module/:view', {
                        templateUrl: function(params) {
                            var core = angular.element(document).injector().get('core');
                            core.openView(params.module, params.view);
                            return 'app/views/{0}/{1}.jsp'.format(params.module, params.view);
                        }
                   }).
                   otherwise({
                     redirectTo: '/home/landing'
                   });
               });
'use strict';
// declare an application core module
var coreModule = angular.module('core', ['network']);
coreModule.factory('core',
    function (http, $location) {
        return {
            openView: function (module, view) {
                if (!module) {
                    throw new Error('Please provide module.');
                }
                
                if (!view) {
                    throw new Error('Please provide view.');
                }
                
                http.getController(module, view);
                if($location.path() !== '/{0}/{1}'.format(module, view)) {
                    $location.path('/{0}/{1}'.format(module, view)).replace();
                }
            }
        };
    }
);
'use strict';
// declare a network service module
var httpModule = angular.module('network', []);
httpModule.factory('http',
    function ($http, $q) {
        return {
            get: function (url) {
                if (!url) {
                    throw new Error('Please provide request url.');
                }
                
                var defer = $q.defer();
                
                $http.get(url).then(
                    function(response) {
                        defer.resolve(response.data);
                    },
                    function(error) {
                        defer.reject(error);
                    });
                return defer.promise;
            },
            post: function (url, paramObj) {
                if (!url) {
                    throw new Error('Please provide request url.');
                }
                
                var defer = $q.defer();
                
                paramObj = paramObj || {};
                $http.post(url, paramObj).then(
                    function(response) {
                        defer.resolve(response.data);
                    },
                    function(error) {
                        defer.reject(error);
                    });
                return defer.promise;
            },
            getController: function (module, controller) {
                if (!module) {
                    throw new Error('Please provide module.');
                }
                
                if (!controller) {
                    throw new Error('Please provide controller.');
                }
                
                var webRoot = window.location.href.substr(0, window.location.href.lastIndexOf('/home.action'));
                var url = '{0}/{1}/{2}/{3}.js'.format(webRoot, 'app/controllers', module, controller);
                var existed = false;
                $.each($('head').find('script'), function(index, value) {
                 if(value.src === url) {
                 existed = true;
                 }
                });
                
                if(!existed) {
                    var script = document.createElement('script');
                    script.type = 'text/javascript';
                    script.src = url;
                    script.charset = 'utf-8';
                    document.head.appendChild(script);
                }
            }
        };
    }
);

转载于:https://www.cnblogs.com/Rising/p/3606888.html

你可能感兴趣的文章
如何获得WPA握手包&EWSA破解WPA密码教程[zz]
查看>>
CountDownTimer,0,0
查看>>
mac 终端 常用命令
查看>>
对VM挂载新加入的磁盘
查看>>
MyEclipse *的安装步骤和破解(32位和64位皆适用)(图文详解)
查看>>
如何撤销 PhpStorm/Clion 等 JetBrains 产品的 “Mark as Plain Text” 操作 ?
查看>>
利用RTMFP开发P2P应用
查看>>
使用maven创建web项目
查看>>
第三十八章 springboot+docker(maven)
查看>>
构建单页面应用
查看>>
BZOJ4078 : [Wf2014]Metal Processing Plant
查看>>
变量的数据类型的转换
查看>>
codevs1022 覆盖[Hungary 二分图最大匹配]
查看>>
mybatis同时启用mapperscanner和传统DAO
查看>>
Spring AOP 通过order来指定顺序
查看>>
记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题
查看>>
Deci and Centi Seconds parsing in java
查看>>
TestNg依赖高级用法之强制依赖与顺序依赖------TestNg依赖详解(二)
查看>>
Javascript中构造函数与new命令
查看>>
java selenium webdriver处理JS操作窗口滚动条
查看>>