加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – bootstrap navbar有几个错误

发布时间:2020-12-17 18:08:30 所属栏目:安全 来源:网络整理
导读:我使用angular custom directive来实现bootstrap navbar.这是我的代码: "use strict";var helper = require('../helper.js')var app = angular.module('custom_directive')app.directive('tagNavbar',[function() { return { restrict: 'E',scope: { },temp
我使用angular custom directive来实现bootstrap navbar.这是我的代码:

"use strict";
var helper = require('../helper.js')
var app = angular.module('custom_directive')

app.directive('tagNavbar',[function() {
    return {
        restrict: 'E',scope: {
        },templateUrl: '/public/common/tag_navbar.html',controller:
    ['$scope','$window','userService',function($scope,$window,userService) {

    var curUrl = $window.location.pathname + $window.location.hash

    //client url is used in <a href>,redirect purpose
    $scope.signinClientUrl = helper.urlWithQuery('/auth#!/signin',{redirect:curUrl})
    $scope.signupClientUrl = helper.urlWithQuery('/auth#!/signup',{redirect:curUrl})

    //server url is used for rest api,like <form action>
    //if signout success,better to redirect to home,since some page are not authorized
    $scope.signoutServerUrl = helper.urlWithQuery('/auth/signout',{successRedirect:'/',failureRedirect:curUrl})


    $scope.classForNavWithPath = function(path) {

        $scope.userService = userService

        //pathname for which tab to highlight,use hash if the tab has dropdown list
        var pathname = $window.location.pathname
        var hash = $window.location.hash
        return (pathname == path ? 'active' : '')
    }


    //todo: bug: unable to refresh page by clicking the same nav tab

    $scope.showSignin = ! userService.isAuthenticated()
    $scope.showSignup = ! userService.isAuthenticated()
    $scope.showSignout = userService.isAuthenticated()

}]}}])

和HTML:

<div class="tag-navbar">

    <nav class="my-navbar">
        <div class="my-navbar-header">
            <button type="button" class="my-navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
                <span class="my-icon-bar"></span>
                <span class="my-icon-bar"></span>
                <span class="my-icon-bar"></span>
            </button>
            <a class="my-navbar-brand" href="/#!/">Apple Fanboy</a>
        </div>
        <div class="my-navbar-collapse" id="myNavbar">
            <ul class="my-navbar-nav">
                <li ng-class="classForNavWithPath('/')"><a href="/#!/">Home</a></li>
                <li ng-class="classForNavWithPath('/article')"><a href="/article#!/">article</a></li>
                <li ng-class="classForNavWithPath('/profile')"><a href="/profile#!/">profile</a></li>
                <li ng-class="classForNavWithPath('/editor')"><a href="/editor#!/">editor</a></li>
                <li ng-class="classForNavWithPath('/admin')"><a href="/admin#!/">admin</a></li>
            </ul>



            <ul class="my-navbar-nav-right">
                <li ng-show="showSignout">
                    <a ng-href="{{signoutServerUrl}}">sign out</a>
                </li>
                <li ng-show="showSignin">
                    <a ng-href="{{signinClientUrl}}">sign in</a>
                <li ng-show="showSignup">
                    <a ng-href="{{signupClientUrl}}">sign up</a>
                </li>
            </ul>
        </div>
    </nav>

</div>

我在标题中使用它

<tag-navbar></tag-navbar>

有2个错误(或可配置的默认值?)

>在移动尺寸浏览器上,导航栏默认为展开.不确定它是否是默认行为,我认为这不是大多数用户想要的
>假设我在/ profile页面中,我想通过单击配置文件导航选项卡刷新页面,但链接不可点击.我需要让它可点击.

导航栏的CSS(我使用sass)

.my-navbar {
  //Note: navbar = header + collapse
  @extend .navbar;
  @extend .navbar-default;
  //Note: required by navbar logic,although .container is set to body
  @extend .container-fluid;

  .my-navbar-header {
    @extend .navbar-header;

    .my-navbar-toggle {
      @extend .navbar-toggle;

    }

    .my-icon-bar {
      //it's inside toggle,but can be inside other icons as well
      @extend .icon-bar;
    }

    .my-navbar-brand {
      @extend .navbar-brand;
    }
  }

  .my-navbar-collapse {
    @extend .collapse;
    @extend .navbar-collapse;

    .my-navbar-nav {
      @extend .nav;
      @extend .navbar-nav;

    }
    .my-navbar-nav-right {
      @extend .my-navbar-nav;
      @extend .navbar-right
    }
  }
}

编辑:

如果我直接使用

<div class="collapse navbar-collapse" id="myNavbar">

它有效,但是

<div class="my-navbar-collapse" id="myNavbar">

它不起作用.
但我的导航栏崩溃是这样定义的,应该是相同的

.my-navbar-collapse {
    @extend .collapse;
    @extend .navbar-collapse;
  }

解决方法

问题是你不应该组崩溃.出于同样的原因你不能使用data-toggle =“my-collapse”

试试这个:

.my-navbar-collapse {
    //cannot put `collapse` and data-toggle's `collapse` here
    @extend .navbar-collapse;

    .my-navbar-nav {
      @extend .nav;
      @extend .navbar-nav;

    }
    .my-navbar-nav-right {
      @extend .my-navbar-nav;
      @extend .navbar-right
    }
  }

在导航栏中

<div class="collapse my-navbar-collapse" id="myNavbar">

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读