关于$location服务

$location服务是对所有浏览器中都存在的window.location对象的封装。
window.location与$location服务的不同:
告别全局变量:全局变量对测试、维护以及使用都很麻烦,$location服务将会屏蔽这种污染;单元测试的时候,可以利用$location服务注入假数据
API:window.location提供的是字符串形式的信息,而$location可以提供一些更加好用的jQuery风格的getter和setter,可以用简洁的方式来使用这个对象
AngularJS集成:使用window.location,当其中的内容发生变化时,需要自己通知AngularJS,并且需要负责监听;使用$location,就可以按照喜欢的方式来使用
HTML5集成:$location服务非常智能,它能够感受到浏览器是否可以使用HTML5 API。如果可以,它会自动使用这些API;如果不可以,它会降级并使用默认的处理方式
什么时候应该使用$location服务呢?
一是需要对URL的变化做出响应($route服务没有包含此功能,$route服务主要用来处理基于URL的视图)的情况;二是需要针对浏览器当前的URL触发一次change事件的情况
何时以及如何调用$apply:
不要频繁调用它。当AngularJS正在运行时,调用$apply将会引起错误。
当AngularJS外部的控制器(DOM事件、外部的回调函数等)调用了AngularJS函数之后,必须调用$apply。
把要执行的代码和函数传递给$apply去执行,不要自己执行那个函数然后再调用$apply。如:
$scope.$appply(function(){
$scope.variablel = 'some value';
executeSomeAction();
});
而不是这样:
$scope.variablel = 'some value';
executeSomeAction();
$scope.$appply();
这两种方式的运行效果相同,但是他们存在一个重大的不同点。
当调用executeSomeAction时,第一种方式会捕获所有错误,而第二种方式会忽略所有错误。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值