angularjs 中 $location.path("/home") 和 $location.$$path="/home" 的区别

Difference between $location.path("/home") and $location.$$path="/home" in angularjs

我的示例 POC 中有一个登录页面和一个主页。

当用户完成登录后,我已从登录页面重定向到主页。

我已经尝试使用以下代码从登录页面重定向到主页 angular.$location

代码 1

 $location.path("/home");

此代码正在运行 good.No 个问题。

代码 2

$location.$$path="/home";

此代码可能无法正常工作,因为页面已重定向,但 URL 显示为之前的 URL, 未更改重定向的 URL.

  • Why is this happened?
  • What is the difference between code1 and code2

Angular 对他们的某些 API 方法、属性和事件名称使用一美元 ($)。这些方法被认为 "public" 并且开发人员可以安全使用。 它们已记录在案,不太可能有太大变化,但如果它们确实发生了变化,那么 angular 团队会告诉我们。

当您看到两美元 ($$) 时,最好不要管它。您当然可以以任何您想要的方式使用它们(调试是一个很好的用途),但您不需要这样做。如果您将它们用于您自己的目的,则无法保证它甚至会在下一个次要版本更新时出现,因此您的代码会变得更加脆弱。

$$path 是 angular 的内部 属性 你不应该碰那个。

如果您在 angular 代码库 (https://github.com/angular/angular.js/blob/master/src/ng/location.js#L480) 中看到此定位服务代码。

$location.$$path = 'somepath',只会设置 $$path 值

然而,

$location.path('somepath') 还会做一些其他事情,比如在内部调用 $$compose 并更新 this.$$urlthis.$$absUrl