0

我有一个带有主要 index.html 的 webapp,它通过 ng-view 和 routeProvider 显示每个页面。

现在我正在为尚未登录的用户添加一个入口页面。这个页面也可以有他自己的 ng-view 来为未登录的用户滑动不同的部分(欢迎,什么是,登录,注册 ecc... ) 和他自己的头用 css 脚本 ecc ...

我宁愿 webapp 索引和入口页面索引地址都指向 www.example.com (所以不像 www.example.com/welcome )。

我想到了一个类似这样的结构:

  • 网页应用/
    • 主要的/
    • 第1页/
    • 第2页/
    • 欢迎/
      • 第1节/
      • 第2节/
      • 索引.html
      • Welcome.js(入口页面的 Angular 模块)
    • .htaccess
    • 索引.html
    • webapp.js(包含 webapp 的 routeProvider 的 Angular 模块)

目前我有那个 .htaccess 将所有虚假查询重写为 index.html 以便在这里处理所有内容。

所以特别是:

1)如果我已经对webapp主页使用了这个条件,我怎么能告诉webapp.js的routerProvider在用户没有登录时去/welcome/index.html?(我应该使用 run 方法吗?一个简短的例子会有所帮助)

.config(['$routeProvider', function($routeProvider){
    $routeProvider
    .when(...)
    .when('/', {
        templateUrl : 'main/webapp-main.html'
    })
    .when(...)

2) 如何防止welcome/index.html 中的所有内容都加载到index.html ng-view 中?(也许使用 ng-if 来隐藏 ng-view?或者有什么方法可以通过 routerProvider 来控制这种行为?)

3)有更好更简单的方法来实现这一切吗?

谢谢。

更新: 好的,我认为我的问题存在潜在问题......我不能使用完全不同的页面,因为所有内容都已加载并切换到另一个页面会导致应用程序重新加载丢失所有数据。所以我想我应该为整个网站使用相同的主模板。
然后我补充说:angularjs中有一种方法可以动态加载不同的样式表吗?

4

1 回答 1

1

这个问题很老,但我认为是有效的,可以澄清一些人的想法。

首先,您应该为 AngularJS 应用程序使用单个页面,否则您将不得不执行重定向链接之类的操作,并且在您的 other-index.html 中加载一个完全不同的 Angular 应用程序,同时加载第一个所需的每个脚本.

1)使用ui-router起来很容易,而且非常健壮,你唯一需要的是一个容器,ui-view然后ui-router将用相应的html填充容器

2)为了防止导航,你应该做这样的事情:

angular.module('myApp', [])
.run(function($rootScope, mySessionService){
  $rootScope.$on('$stateChangeStart',
      function(event, next, nextParams, prev, prevParams) {
        // The info of your currentUser could be obtain from a service
        // or localStorage or cookies anyway you are already doing it
        var authorized= checkAuthorization(next.authorazedRoles,             
                          mySessionService.getCurrentRol());
        if(!authorized) {
          $rootScope.$state.go('defaultState');
          // Or $rootScope.$emit('NOT_AUTHENTICATED');
          // and some service will have to implement a listener for this emit
          // $rootScope.$on('NOT_AUTHENTICATED', func..redirect to X State)
        }
      });
});
于 2015-04-26T15:31:15.220 回答