在angularjs中切换数据ng应用程序模块配置

在angularjs中切换数据ng应用程序模块配置,angularjs,angularjs-module,Angularjs,Angularjs Module,我正在尝试将我的应用程序分为几个模块。我有一个登录模块和应用程序的其余部分。我的想法是,如果用户不首先登录,就无法访问应用程序的其余部分。为此,我使用了两个具有不同配置的angular.module,但我无法seam动态地让angular解析新的app.js并在我的webapp上使用它的配置 //index.html <div data-ng-app="login" ui-view></div> //login.js .state('user.signin', {

我正在尝试将我的应用程序分为几个模块。我有一个登录模块和应用程序的其余部分。我的想法是,如果用户不首先登录,就无法访问应用程序的其余部分。为此,我使用了两个具有不同配置的angular.module,但我无法seam动态地让angular解析新的app.js并在我的webapp上使用它的配置

//index.html
<div data-ng-app="login" ui-view></div>

//login.js
.state('user.signin', {
            url: '/signin',
            templateUrl: 'login.html'
        })
        .state('appUIView', {
            url: '/appUIView',
            templateUrl: 'appUIView.html',
            resolve: {
                deps: ['uiLoad',
                  function( uiLoad ){
                    return uiLoad.load( [
                                            'js/app.js'//I try resolving the app.js so I can now use it's configuration
                                        ]);
                }]
            }
        })
 //appUIView.html
 <div data-ng-app="app" ui-view></div>//uses the app defined in app.js


 //app.js
 $urlRouterProvider
    .otherwise('/app');//when app.js is loaded if the new configuration is used the page should land on app.html
 $stateProvider   
        .state('app', {
            url: '/app',
            templateUrl: 'app.html'
        })
//index.html
//login.js
.state('user.sign'{
url:“/sign”,
templateUrl:'login.html'
})
.state('appUIView'{
url:“/appUIView”,
templateUrl:'appUIView.html',
决心:{
部门:['uiLoad',
功能(uiLoad){
返回uiLoad.load([
'js/app.js'//我尝试解析app.js,以便现在可以使用它的配置
]);
}]
}
})
//appUIView.html
//使用app.js中定义的应用程序
//app.js
$urlRouterProvider
。否则(“/app”)//加载app.js时,如果使用新配置,则页面应位于app.html上
$stateProvider
.state('应用程序'{
url:“/app”,
templateUrl:'app.html'
})


谢谢你的帮助

Angular中的Web应用程序通常有1个ng应用程序模块

最合理的做法是,如果你真的需要两个独立的应用程序,那就是开发两个独立的angulars应用程序。您可以将登录模块重定向到承载应用程序安全版本的页面。当然,这意味着您必须执行常规重定向,从而触发浏览器重新加载

您还可以在一个应用程序中拥有多个ng应用程序。在这种情况下,您必须使用引导在它们之间切换。然而,除非有充分的理由,否则我不会求助于此。这似乎有点像黑客

angular.bootstrap(document.getElementById('app'),['app']);

我使用一些服务器端MVC(ASP.NET MVC,但我相信你可以用任何类似的平台来实现)来为我们用于内部应用程序的一组AngularJS模块实现这一点。我只需设置一个ViewBag属性,该属性可以由MVC中的(共享)页面模板获取,例如

此ViewBag属性由我的服务器端路由设置,因此对/App1的请求将为该包提供脚本,包括相关模块定义。与/App2、/App3等相同,/App1下的任何内容都由SPA的客户端路由处理(我们使用ui路由器)


值得关注的是,它被移植到了1.3,这将支持在单个应用程序中动态加载子应用程序/路由器。我希望这意味着应用程序模块的动态加载…

这是怎么回事:好吧,我不知道。我想这回答了你的问题。我编辑了我的答案。谢谢,有人能告诉我如何在我的上实现它,而不是放置ng应用程序指令吗?你可以使用angular.bootstrap(html元素,angular模块)将模块注入到元素中。因此,只要找出代码中正确的位置,就可以这样做。