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 相关文章推荐
解决FLASH需要点击激活的代码
Dec 20 Javascript
javascript 实现简单的table排序及table操作练习
Dec 28 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
Jun 24 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
Nov 28 Javascript
js获取当前时间显示在页面上并每秒刷新
Dec 24 Javascript
js实现PC端和移动端刮卡效果
Mar 27 Javascript
jquery点赞功能实现代码 点个赞吧!
May 29 jQuery
详解Vue的computed(计算属性)使用实例之TodoList
Aug 07 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
Aug 16 Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
Sep 01 Javascript
Node.js readline 逐行读取、写入文件内容的示例
Mar 01 Javascript
JS实现瀑布流效果
Mar 07 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
人大复印资料处理程序_输入篇
2006/10/09 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
js+css在交互上的应用
2010/07/18 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
css配合jquery美化 select
2013/11/29 Javascript
javascript实现json页面分页实例代码
2014/02/20 Javascript
jQuery固定浮动侧边栏实现思路及代码
2014/09/28 Javascript
jQuery中click事件用法实例
2014/12/26 Javascript
jQuery实现不断闪烁文字的方法
2015/05/15 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
基于angular2 的 http服务封装的实例代码
2017/06/29 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
Python入门_浅谈for循环、while循环
2017/05/16 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
Python学习pygal绘制线图代码分享
2017/12/09 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
python3中函数参数的四种简单用法
2018/07/09 Python
python统计字符的个数代码实例
2020/02/07 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
Bally澳大利亚官网:瑞士奢侈品牌
2018/11/01 全球购物
艺术学院毕业生自我评价
2014/03/02 职场文书
农业生产宣传标语
2014/10/08 职场文书
党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
鸡毛信观后感
2015/06/11 职场文书
保姆聘用合同
2015/09/21 职场文书
Python Matplotlib绘制两个Y轴图像
2022/04/13 Python
Python读取和写入Excel数据
2022/04/20 Python