Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $location和window.location比较_Javascript_Angularjs - Fatal编程技术网

Javascript $location和window.location比较

Javascript $location和window.location比较,javascript,angularjs,Javascript,Angularjs,在angularjs、$location或window.location中使用哪个更好 例如,对于相同的工作,我们可以使用$location.path()或window.location.href。哪个更合适 有人建议吗?您应该使用$location,这样AngularJS就可以知道您所做的更改。如果您直接操作window.location,AngularJS将无法识别它,并且在其他AngularJS方法调用下一个摘要周期之前不会发生更改。事实上,这就是AngularJS围绕本机方法进行包装的原

在angularjs、
$location
window.location
中使用哪个更好

例如,对于相同的工作,我们可以使用
$location.path()
window.location.href
。哪个更合适


有人建议吗?

您应该使用
$location
,这样AngularJS就可以知道您所做的更改。如果您直接操作
window.location
,AngularJS将无法识别它,并且在其他AngularJS方法调用下一个摘要周期之前不会发生更改。事实上,这就是AngularJS围绕本机方法进行包装的原因之一,比如
$timeout
$interval
等对于AngularJS应用程序路径中的位置,请使用
$Location.path(“yourroute”)
$location.url('/RouteTo/')

对于Angular应用程序之外的位置(即未定义路线),纯旧JavaScript将提供:

window.location=”http://www.domain.com/login“

$location
是window.location的angularjs包装。因为angularJS严重依赖于它的变化检测技术来使变化对UI可用。Angular通过对$scope和其他角度对象所做的每次更改运行摘要循环来实现这一点。如果直接使用window.location,angular此时将无法检测到更改。因此,它们使用$location,它在内部使用window.location并调用摘要循环。这样,位置更改会即时更新。