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

本文共 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

你可能感兴趣的文章
javascript检测IE6-8,chrome,safari,firefox,opera等主流浏览器类型
查看>>
C 位运算详解
查看>>
USB复合设备与组合设备的区别
查看>>
JFinal 源码导读第一天(JFinalFilter init)
查看>>
PHP学习笔记1:基础知识快速浏览
查看>>
Oracle 事务表实验
查看>>
Linux ACL 体验
查看>>
一篇不错的对于乐观锁和悲观锁的解释帖子
查看>>
一点感慨, 小小记录
查看>>
KVM分布式共享存储解决方案-sheepdog
查看>>
在 ubuntu 搭建 docker registry 私有仓库
查看>>
沃通免费SSL证书2018新版上线,全球信任、限时申请!
查看>>
Oracle Linux 7.3 下安装 Oracle Database 12c R2
查看>>
java String比较相等时必须使用equals的引申
查看>>
报表开发FineReport优化报表取数
查看>>
你应该知道的计算机网络知识
查看>>
linux下单个网卡设置多IP
查看>>
大硬盘在服务器上使用
查看>>
阿里五年晋升三次,这个程序员要聊聊他的选择
查看>>
Linux 开机流程及修复MBR
查看>>