首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ui-路由器中包含不同的导航面板

如何在ui-路由器中包含不同的导航面板
EN

Stack Overflow用户
提问于 2017-07-07 08:40:09
回答 1查看 45关注 0票数 1

我的AngularJS应用程序有两个部分需要单独的导航栏:

  • Patents
代码语言:javascript
复制
- `patent nav bar: list patents, add patents`

  • Transactions
代码语言:javascript
复制
- `transaction nav bar: current transactions, transaction history`

我读过How to attach navbar only on certain pages using ui-router?,您可以在其中使用视图,但这包括状态中的templateUrl,在组件中声明了templateUrl,如下所示:

代码语言:javascript
复制
$stateProvider
.state('patents', {
   url: '/patents',
   component: 'patents',
})

angular.module('myApp').component('patents', {
    bindings: { patents: '<' },
    templateUrl: '../templates/patents/list/list-patents.htm'
});

问题

ui-router中使用组件时,在模板/状态中包含不同导航的最佳方法是什么?如果答案是直截了当的,那就道歉。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-07 08:49:31

方法1

通过模板中的ng-include

代码语言:javascript
复制
<div ng-include="'link/to/template.html'"></div>

方法2

更动态地,您可以创建一个自定义<navigation>组件,它通过$stateParam设置正确的模板。

路由器:

代码语言:javascript
复制
.state('patents', {
    url         : '/patents',
    component   : 'patents',
    params      : {
        navigation  : 'custom'
    }
})

然后,在导航组件中,可以使用

代码语言:javascript
复制
template    : function($stateParams) {
    var navigation = $stateParam.navigation || 'default';
    return '<div ng-include="\''link/to/' + navigation + '.html'\'"></div>
},

因此,您只需在您的路由器中设置param时,该页面就有了自定义导航。

确保在每个页面中都包含<navigation>

方法3

如果您不想在每个页面中包含<navigation>,您还可以创建一个单一导航菜单(就像现在可能有的那样),并使用下面的方法添加一个控制器

代码语言:javascript
复制
app.controller('NavigationCtrl', function($rootScope, $state) {
    $rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {
        this.navigation = toParams.navigation;
    });
})

您可以在每次路由更新时捕获toParams,并使用它动态更改模板:

导航模板:

代码语言:javascript
复制
<div class="nav" ng-controller="NavigationCtrl as $ctrl">

    <div ng-if="$ctrl.navigation === 'default'">
        // Include default
    </div>

    <div ng-if="$ctrl.navigation === 'custom'">
        // Include custom
    </div>

</div>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44966318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档