AngularJS:通过 UI 路由器加载 js 文件

Posted

技术标签:

【中文标题】AngularJS:通过 UI 路由器加载 js 文件【英文标题】:AngularJS : Load js file through UI router 【发布时间】:2015-08-22 11:28:19 【问题描述】:

我的应用程序中有 AngularJs ui 路由器。我需要根据我的状态加载js文件。

.state('root.home',
        url: '/index.html',
        views: 
            'header': 
                templateUrl: 'modules/header/html/header.html',
                controller: 'headerController'
            ,          
            'content-area': 
                templateUrl: 'modules/home/html/home.html',
                controller: 'homeController'
            ,
            'footer': 
                templateUrl: 'modules/common/html/footer.html',
                controller: 'footerController'
            
        ,
        data: 
            displayName: 'Home',
         
    )

headerController,homeController,footerController在home状态加载的时候有不同的js文件那个时候我们需要加载controller的js文件是否可以通过UI路由呢?

【问题讨论】:

js文件是有角度的还是无角度的? 见***.com/questions/28184616/…和***.com/questions/22627806/… 【参考方案1】:

您不应该根据您的路由状态即时加载 javascript 文件,而是应该连接所有 js 文件并通过 Gulp 缩小编译的源代码。

https://www.npmjs.com/package/gulp-concat https://www.npmjs.com/package/gulp-minify

【讨论】:

【参考方案2】:

ui-route 比 requirejs (ng-route) 更强大。

你可以看看她的不同之处:

What is the difference between angular-route and angular-ui-router?

http://www.amasik.com/angularjs-ngroute-vs-ui-router/

【讨论】:

【参考方案3】:

我认为你需要使用像RequireJs 这样的框架 它正在根据您向用户显示的页面加载您的脚本文件

RequireJS 加载所有与 baseUrl 相关的代码。

检查一下。我认为这可能会有所帮助。

【讨论】:

以上是关于AngularJS:通过 UI 路由器加载 js 文件的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS UI 路由器 - 在不重新加载状态的情况下更改 url

AngularJs 通过 ocLazyLoad 实现动态(懒)加载模块和依赖

AngularJS的ui-router第一次点击激活路由加载页面,再次点击就没用,如何实现每次点击都激活加载路由一次

angularJS使用ocLazyLoad实现js延迟加载

如何使用angularjs处理动态菜单

AngularJS - 基于路由动态加载外部 JS