美文网首页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