美文网首页Angular.js专场我爱编程
angularjs+bootstrap菜单的使用

angularjs+bootstrap菜单的使用

作者: EldonZhao | 来源:发表于2017-03-06 16:46 被阅读876次

    需求背景:

    使用yo angular生成的项目默认主页是这样的:

    main_page.png

    body部分涉及具体的业务内容,后续研究。这里主要研究菜单项、页眉的处理。

    页脚处理:

    自动生成的项目中,菜单和页脚设置都是在index.html文件中实现的。

    # index.html
        <div class="footer">
          <div class="container">
            <p><span class="glyphicon glyphicon-heart"></span> 京东金融·杭州研发中心</p>
          </div>
        </div>
    

    设置css格式:

    /* Custom page footer */
    .footer {
      padding-top: 20px;
      color: rgba(204, 3, 8, 0.91);
      border-top: 1px solid #e5e5e5;
      text-align: center;
    }
      .container {
        max-width: 730px;
        margin-left: auto;
        margin-right: auto;
      }
    
    上述截图还可见页面格式问题,是因为创建工程时,没有依赖bootstrap还有compass,项目根目录下安装相关依赖即可:
    bower install compass --save
    bower install bootstrap --save
    

    菜单处理:

    菜单功能主要在index.html文件中的header代码段实现。

        <div class="header">
          <div class="menu">
            <nav class="navbar navbar-default" role="navigation">
              <div class="navbar-header">
                <!--![](images/jdjr.jpg)-->
              </div>
    
              <div class="collapse navbar-collapse" id="">
                <ul class="nav navbar-nav">
                  <li class="active dropdown">
                    <a class="dropdown-toggle" href="#" data-toggle="dropdown">网关信息</a>
                    <ul class="dropdown-menu">
                      <li><a href="">NAT网关</a></li>
                      <li><a href="">ROUTER网关</a></li>
                    </ul>
                  </li>
                </ul>
              </div>
            </nav>
          </div>
        </div>
    

    这些class设置了默认属性,所以能够呈现出较为友好的样式,所以如果使用自定义类名,那样式需要自己设置。如果需要鼠标移动到菜单上就能够显示子菜单,则需要设置css属性。

    .dropdown:hover .dropdown-menu {
      display: block;
    }
    

    菜单增加跳转:

    菜单的跳转主要通过href实现,如下代码就是操作日志菜单跳转到/oplog页面:

    <li><a href="#!/oplog">操作日志</a></li>
    

    然后需要在app.js中增加相关控制代码:

          .when('/oplog', {
            templateUrl: 'views/about.html',
            controller: 'AboutCtrl',
            controllerAs: 'about'
          })
    

    由于这里我重用了项目初始化时就生成的about.html代码,所以,不需要开发相关html文件,实际开发中这个跳转后的网页是需要自己在views目录下创建并开发页面的,同时需要在controllers目录下开发相关控制(此处就为AboutCtrl.js)代码。

    菜单active属性处理:

    按照前面说明开发出的菜单存在当前选中的菜单项不是active状态的问题,需要菜单支持动态切换active状态就需要做相关处理。
    绑定active属性到方法:ng-class="{'active': isActive('url')}",此时isActive的方法实现需要在controller中实现:

        $scope.isActive = function (current) {
          console.log("current:" + current);
          console.log("location url:" + $location.url());
          var loc = '#!' + $location.url();
          console.log(current === loc);
          return current === loc;
        }
    

    实现原则就是当前的url和传入的url字符串是否一致。如果一致,则当前菜单项为active状态。

    菜单插入图片处理:

              <div class="navbar-header">
                ![](images/jdjr.jpg)
              </div>
    

    设置图片格式:

    .img-thumbnail {
      height: 75px;
    }
    

    菜单效果:

    menu_page.png

    参考资料:

    相关文章

      网友评论

        本文标题:angularjs+bootstrap菜单的使用

        本文链接:https://www.haomeiwen.com/subject/lajugttx.html