使用angularjs写一个导航栏控制器
来源:互联网 发布:2016淘宝双11报名入口 编辑:程序博客网 时间:2024/05/08 09:39
这两天用angular写博客前端的时候专门写了个NavController来管理导航栏。下面是代码,暂时功能还比较简单,有需要的话会不断更新。
首先是javascript代码。NavController有两个重点,第一是打开页面时要根据url选择当前栏目,其中的逻辑集中在NavController init的时候;第二是点击栏目时,active点击的栏目,并跳转。
angular.module('blog.controllers') .controller('NavController', function($scope, $location) { // Public. // "navItems"存储着导航栏的栏目。 $scope.navItems = [ { title: 'Home', locationUrl: '/', href: '/app/index.html#' + '/' }, { title: 'About Me', locationUrl: '/aboutMe', href: '/app/index.html#' + '/aboutMe' }, { title: 'Management', locationUrl: '/manageHome', href: '/app/index.html#' + '/manageHome' }, ] // .selectedNavItem变量存储当前选择项,默认的选择项是"Home"。 $scope.selectedNavItem = 'Home' // 栏目click时触发的方法。 $scope.itemClick = function(itemTitle) { $scope.selectedNavItem = itemTitle } // 初始化。 // 判断当前地址栏路径属于哪个导航栏目。 var currentLocation = $location.path() for (var i = 0, len = $scope.navItems.length; i < len; i++) { var navItem = $scope.navItems[i] if (currentLocation == navItem.locationUrl) { $scope.selectedNavItem = navItem.title } } });
然后是html,下面是简化后的代码:
<ul> <li ng-repeat="navItem in navItems" ng-class="{active: selectedNavItem == navItem.title}" ng-click="itemClick(navItem.title)"><a href="{{navItem.href}}">{{navItem.title}}</a></li></ul>"na-repeat"遍历所有的的栏目;"ng-class"里面的active是一个css类,通过selectedNavItem来判断是否设active为true,值得留意的是ng-class会监听selectedNavItem的改变,这种监听是angular的核心功能之一,能帮我们省去很多麻烦;"ng-click"设置该项的点击事件。
整个功能比较简单,最后说明一下其中的执行逻辑。当从浏览器的地址栏加载一个地址并进入该app时,一个新的NavController会被初始化,这时候就要通过地址栏来判断应该active的navItem;当点击其中一个navItem时,因为使用"#"锚来跳转,页面不会重新加载,因此要用一个click事件来设置selectedNavItem。
- 使用angularjs写一个导航栏控制器
- 导航控制器 导航栏的基本使用
- modal一个导航控制器
- 使用AngularJS写一个支付倒计时
- UI12-导航栏视图控制器的使用
- 导航控制器的使用
- 使用列表写导航栏
- 导航栏控制器
- 导航栏控制器--UINavigationController
- iOS导航控制器的使用
- UINavigation导航控制器的使用
- 使用导航控制器的笔记
- 导航控制器的使用01
- 导航控制器的使用02
- 导航控制器的使用03
- 写一个注册导航
- 使用angularjs和bootstrap写一个简单的购物车
- 如何在一个没有导航栏的控制器视图里面用模态视图弹出别的控制器视图
- 通过adb shell操作WIFI
- 缩点
- Servlet是什么?
- Leetcode Single Number
- 【Git入门之四】操作项目
- 使用angularjs写一个导航栏控制器
- 软考一 计算机系统知识
- linux内核装载elf过程简介
- C++指针学习
- C程序设计语言--输入/输出
- Python Challenge(2--3关)——我的解题报告(running with python3.x)
- android ndk开发环境搭建(windows环境下)
- poj 2318 Toys
- 非递归遍历二叉树