2013-05-03 116 views
0

我需要创建下一个层次结构:我在我的应用程序中获得了多个用户角色。我的应用程序的界面包含一个顶部导航栏,每个角色都有不同的选项卡。每个选项卡通常具有主 - 细节视图,其中显示了一些实体,并且默认情况下加载了第一个实体。嵌套视图和控制器

在挣扎认证之前(我发现了一些关于http拦截器等的文章)我想知道如何做最简单的事情:导航系统。

例如,假设我硬编码了我的用户角色,管理角色默认加载。我有一个cp.html文件,其中的顶部导航是。如果用户登录,当我转到'/'路由时,我应该用admin标签将他重定向到cp.html。如果用户没有登录,我应该将他重定向到'/ login'页面。

这是示例cp.html的:

<div class="navbar"> 
    <div class="navbar-inner"> 
     <ul class="nav"> 
      <li><a href="#/desktop">Desktop</a></li> 
      <li><a href="#/companies">Companies</a></li> 
      <li><a href="#/users">Users</a></li> 
     </ul> 
    </div> 
</div> 
<div ng-include src="include"> 
</div> 

这是家( '/')控制器:

function homeController($scope, $routeParams, $location) { 
    if ($routeParams.tab) { 
     $scope.include = '/templates/' + $routeParams.tab + '.html'; 
    } else { 
     $scope.include = '/templates/companies.html'; 
    } 
} 

和主app.js:

app.config(['$routeProvider', function($routeProvider) { 

$routeProvider 
    .when('/', { 
     templateUrl: 'templates/cp.html', 
     controller: homeController 
    }) 

    .when('/:tab', { 
     templateUrl: 'templates/cp.html', 
     controller: homeController 
    }) 

所以这里取决于:标签参数我可以包含不同的.html模板。但如何处理控制器?假设我想要去公司选项卡。我想要我的导航栏+公司内容。如果我点击公司选项卡上的文件,但我留在homeController。如果我使用ng-controller指令,那我怎样才能得到公司的id?在典型的例子中,我们有/ companies /:companyId路由。但是,如果我在routeProvider中使用此路由,那么我应该如何使用templateUrl?此外,当我点击公司标签时,我不会更改我的网址,只包括companies.html。

我完全和AngularJS中的嵌套视图和路由混淆。我不想虽然使用第三方库,试图通过自己弄清楚如何处理这个...提前

感谢

回答

0

看看的angular ui-router,我认为这正是你正在找。同样尝试their example app

+0

我会尝试,但我只是想没有图书馆...不管怎样,谢谢! – Victor 2013-05-03 18:46:00

+0

@Victor看看我所做的这个jsfiddle:http://jsfiddle.net/joakimbeng/bPruQ/试图动态加载控制器,它受ng-view指令的启发。可能是你可以使用的东西? – joakimbeng 2013-05-03 20:46:12