当前位置: 首页 > 面试题库 >

如何使用ui-router在仅某些页面上附加导航栏?

利博远
2023-03-14
问题内容

如何在除登录页面之外的所有页面上显示导航栏,从而不必在每个需要的页面上附加导航栏文件?现在,我在主应用程序布局上包含了导航栏,应如何处理使其保持干燥?

演示(每页上带有导航栏):

var App = angular.module('app', ['ui.router']);

App.config(function($stateProvider, $urlRouterProvider) {

  $stateProvider

    .state('home', {

      url: '/home',

      templateUrl: 'home.html'

    })

    .state('about', {

      url: '/about',

      templateUrl: 'about.html'

    }).state('landingpage', {

      url: '/landingpage',

      templateUrl: 'landingpage.html'

    });

  $urlRouterProvider.otherwise('/home');

});


<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.8/angular-ui-router.min.js"></script>

<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet" type="text/css" />



<div ng-app="app">

  <div ng-include="'navbar.html'"></div>



  <div class="container">

    <div ui-view></div>

  </div>



  <script type="text/ng-template" id="navbar.html">

    <nav class="navbar navbar-inverse" role="navigation">

      <div class="navbar-header">

        <a class="navbar-brand" ui-sref="landingpage">LandingPage</a>

      </div>

      <ul class="nav navbar-nav">

        <li><a ui-sref="home">Home</a></li>

        <li><a ui-sref="about">About</a></li>

        <li ng-hide="signedIn()"><a href="/login">Log In</a></li>

        <li ng-show="signedIn()"><a ng-click="logout()">Log Out</a></li>

      </ul>

    </nav>

  </script>



  <script type="text/ng-template" id="home.html">

    <h1>The Homey Page</h1>

  </script>



  <script type="text/ng-template" id="about.html">

    <h1>The About Page</h1>

  </script>



  <script type="text/ng-template" id="landingpage.html">

    <h1>Landing Page</h1>

    <a ui-sref="home">Home</a>

  </script>

</div>

问题答案:

创建像这样的命名视图,<div ui-view name="nav"></div>并按状态按视图设置templateUrl。对于landingpage状态,只需不为nav视图提供templateUrl
,它就不会呈现导航栏。

更新 :隐藏在landingpagehome状态。

var App = angular.module('app', ['ui.router']);

App.config(function($stateProvider, $urlRouterProvider) {

  $stateProvider

    .state('home', {

      url: '/home',

      views: {

        nav: {

          templateUrl: 'navbar.html'

        },

        content: {

          templateUrl: 'home.html'

        }

      }

    })

    .state('about', {

      url: '/about',

      views: {

        nav: {

          templateUrl: 'navbar.html'

        },

        content: {

          templateUrl: 'about.html'

        }

      }

    }).state('landingpage', {

      url: '/landingpage',

      views: {

        content: {

          templateUrl: 'landingpage.html'

        }

      }

    });

  $urlRouterProvider.otherwise('/home');

});


<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.8/angular-ui-router.min.js"></script>

<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet" type="text/css" />



<div ng-app="app">

  <div ui-view name="nav"></div>



  <div class="container">

    <div ui-view name="content"></div>

  </div>



  <script type="text/ng-template" id="navbar.html">

    <nav class="navbar navbar-inverse" role="navigation">

      <div class="navbar-header">

        <a class="navbar-brand" ui-sref="landingpage">LandingPage</a>

      </div>

      <ul class="nav navbar-nav">

        <li><a ui-sref="home">Home</a></li>

        <li><a ui-sref="about">About</a></li>

        <li ng-hide="signedIn()"><a href="/login">Log In</a></li>

        <li ng-show="signedIn()"><a ng-click="logout()">Log Out</a></li>

      </ul>

    </nav>

  </script>



  <script type="text/ng-template" id="home.html">

    <h1>The Homey Page</h1>

  </script>



  <script type="text/ng-template" id="about.html">

    <h1>The About Page</h1>

  </script>



  <script type="text/ng-template" id="landingpage.html">

    <h1>Landing Page</h1>

    <a ui-sref="home">Home</a>

  </script>

</div>


 类似资料:
  • 我想做的是保护一些敏感表单免受但不是所有页面中的攻击。 要保护从如果我设置它在config.php它适用于所有的页面.有没有办法做到这一点只有一些页面通过设置在控制器?

  • 当我试图实现React-导航中的导航器时,我遇到了一些奇怪的行为。 当你尝试简单的“hello world”时https://reactnavigation.org/docs/en/hello-react-navigation.html... 我得到这个错误: 不变违反:元素类型无效:预期为字符串(用于内置组件)或类/函数(用于复合组件),但得到了:对象。检查SceneView的渲染方法。 奇怪的

  • 主要内容:用法,实例,实例,通过 CSS 定位,选项附加导航(Affix)插件允许指定 <div> 固定在页面的某个位置。一个常见的例子是社交图标。它们将在某个位置开始,但当页面点击某个标记,该 <div> 会锁定在某个位置,不会随着页面其他部分一起滚动。 如果您想要单独引用该插件的功能,那么您需要引用 affix.js。或者,正如 Bootstrap 插件概览 一章中所提到,您可以引用 bootstrap.js 或压缩版的 bootstrap.m

  • 当我试图刮下面的url时,selenium在大约30秒内没有响应,然后在带有美丽汤的行上发出错误,因为没有html代码要解析。我的selenium+chrome设置对大多数网站都很好,但这个不是:http://www.11st.co.kr/product/sellerproductdetail.tmall?method=getsellerproductdetail&prdno=2609814501

  • 问题内容: 如何从一页导航到另一页。假设我有一个登录页面,在输入用户名和密码字段并单击提交按钮后,它需要验证,如果用户名和密码都正确,则需要进入主页。主页内容需要显示。我在这里发布代码。在浏览器中,URL不断变化,但内容没有变化。 index.html home.html test.js 问题答案: 正如@dfsq所说,您需要一个ng-view来放置新视图。当然,如果将ng- view添加到索引中

  • 问题内容: 我正在迁移基于AngularJS的应用程序以使用ui-router而不是内置路由。我将其配置如下所示 如何使用pageTitle变量动态设置页面标题?使用内置的路由,我可以 然后将变量绑定到HTML中,如下所示 是否有类似事件可以挂接到ui-router上?我注意到有“ onEnter”和“ onExit”函数,但它们似乎与每个状态相关,将需要我重复代码以为每个状态设置$ rootSc