AngularJS内建服务$location及其功能详解


Posted in Javascript onJuly 01, 2016

在学习AngularJS的过程中感觉到,通过一次性从服务端的数据库获取信息,在前端进行分页,这是一种比较可取的方式。因为它节省了前后端的通信负载,把更多的显示方面的任务交给前端处理。

此内容分为两个部分,第一部分给大家简单介绍一下AngularJS的内建服务$location及其功能;第二部分通过一个比较完整的综合实例来实现分页显示数据库信息的效果。

在做angularJS的Mutilpe View & Route 的工作时,感觉到应该更加深入的了解一下angularJS的内建的服务&location,因为这个内建的服务于浏览器的URL的操作息息相关,感觉如果处理好了这个服务,那么对日后进行页面的翻页处理会很有帮助。

下面就是我的一些小小的实验,以及一些心得体会,都是用白话文写的,可能不是那么的专业,但是希望对大家理解angularJS的一些概念有所帮助。

这个&location是作为一个服务(service),以依赖注入(dependency injection)的方式作为控制器的返回函数的参数使用。下面就以一个实例来解释这个服务的使用。

Section 1:获取URL信息

&location提供了一些个getter和setter方法,比如absUrl,path,protocol,host,port。具体的解释就是,这些都是&location提供的关于链接地址函数的函数名,如果这些函数在使用时不传入任何参数,则表示获取当前的url信息;如果传入一些参数,则表示设置当前浏览器里的url信息。

实例 1

<!DOCTYPE html>
<html ng-app="LocationApp">
<head lang="en">
 <meta charset="UTF-8">
 <title></title>
</head>
<body ng-controller="LocationController">
<p>absUrl----------{{absUrl}}</p>

<p>path------------{{path}}</p>

<p>protocol--------{{protocol}}</p>

<p>host------------{{host}}</p>

<p>port------------{{port}}</p>
<script src="angular.js"></script>
<script>
 var LocationApp = angular.module('LocationApp', []);
 LocationApp.controller('LocationController', ['$scope', '$location', function ($scope, $location) {
  $scope.absUrl = $location.absUrl();
  $scope.path = $location.path();
  $scope.protocol = $location.protocol();
  $scope.host = $location.host();
  $scope.port = $location.port();
 }]);
</script>
</body>
</html>

AngularJS内建服务$location及其功能详解

从截图能够明显的看出,$location这个服务提供的getter方法可以很方便的获取l浏览器当前的url信息。

细心的同学可能已经看到了,这个path怎么没有值呢?
这是因为链接地址里并没有path路径信息。如果我们通过path()方法手动的设置一个path信息,然后再刷新浏览器(刷新时浏览器的url地址是你修改过的信息,是不会变的),就会看到path的信息了。有图有真相!

实例 2

$location.path('detail');
$scope.path = $location.path();

AngularJS内建服务$location及其功能详解

从上面的小的修改中看到,我修改了代码,首先通过setter方法在$location这个内建的服务(其实质就是一个对象,里面有很多关于url信息的属性)里修改了它的path属性的值。
然后再通过getter方法获取到这个新的值。

又因为location这个服务于浏览器地址栏的URL信息是双向绑定的(这是angularJS最精妙的地方),所以无论 location对象的属性还是浏览器地址栏,只要有一方的url信息改变,那么另一方也会跟着改变。所以看到截图中浏览器的地址栏中也多了一个detail这样的path信息,这个信息是之前通过代码设置的。

关于AngularJS实现分页显示功能在下篇文章中为大家进行介绍,希望大家不要错过。

Javascript 相关文章推荐
Jquery+CSS3实现一款简洁大气带滑动效果的弹出层
May 15 Javascript
js/html光标定位的实现代码
Sep 23 Javascript
查找Oracle高消耗语句的方法
Mar 22 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
Mar 18 Javascript
easyui Draggable组件实现拖动效果
Aug 19 Javascript
Webwork 实现文件上传下载代码详解
Feb 02 Javascript
ES6所改良的javascript“缺陷”问题
Aug 23 Javascript
懒加载实现的分页&amp;&amp;网站footer自适应
Dec 21 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
Jun 15 Javascript
vue绑定设置属性的多种方式(5)
Aug 16 Javascript
laydate时间日历插件使用方法详解
Nov 14 Javascript
elementui的el-popover修改样式不生效的解决
Jun 30 Javascript
学习Angularjs分页指令
Jul 01 #Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
Jul 01 #Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
Jul 01 #Javascript
很棒的Bootstrap选项卡切换效果
Jul 01 #Javascript
AngularJS优雅的自定义指令
Jul 01 #Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
Jul 01 #Javascript
再谈Javascript中的基本类型和引用类型(推荐)
Jul 01 #Javascript
You might like
php中ltrim()、rtrim()与trim()删除字符空格实例
2014/11/25 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
Input 特殊事件onpopertychange和oninput
2009/06/17 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
javascript 实现map集合
2015/04/03 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
xmlplus组件设计系列之路由(ViewStack)(7)
2017/05/02 Javascript
javascript简单链式调用案例分析
2017/05/10 Javascript
Vue实现virtual-dom的原理简析
2017/07/10 Javascript
实例详解JSON取值(key是中文或者数字)方式
2017/08/24 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
IE11下处理Promise及Vue的单项数据流问题
2019/07/24 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
python使用电子邮件模块smtplib的方法
2016/08/28 Python
Python中用字符串调用函数或方法示例代码
2017/08/04 Python
python+selenium+autoit实现文件上传功能
2017/08/23 Python
Python3 文章标题关键字提取的例子
2019/08/26 Python
python scrapy重复执行实现代码详解
2019/12/28 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
2020/01/13 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
详解pandas映射与数据转换
2021/01/22 Python
初二物理教学反思
2014/01/29 职场文书
爱之链教学反思
2014/04/30 职场文书
2014年审计工作总结
2014/11/17 职场文书
英文升职感谢信
2015/01/23 职场文书
特此通知格式
2015/04/27 职场文书
副校长2015年教育教学工作总结
2015/07/27 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
Mysql 性能监控及调优
2021/04/06 MySQL