在angularjs中,$和$$之间的区别
在angularjs中,$和$$之间的区别
我正在使用以下代码来跟踪我正在导航到的路由:
$scope.$on('$routeChangeStart', function (event, toState, toParams, fromState, fromParams) { //内容 $log.log(toState); }
当我打印"toState"时,它会给我一个对象,如下所示:
{ $$route: Object loadedTemplateUrl: "views/homepage.html" locals: Object params: Object pathParams: Object scope: ChildScope __proto__: Object }
在这里,我对“$$”在“$$route”中不确定。有人能解释一下$和$$之间的区别吗?
AngularJS中$和$$的区别是什么?
在AngularJS中,$和$$都只是被允许用在变量名中的字符,除此之外并没有其他特殊的含义。AngularJS使用$和$$来标识其自身的重要性和开发团队的意图。
虽然你可以将所有的变量都命名为$或$$,但为了避免冲突,最好不要这样做。以下是一些示例:
$$$$myVariableName;
$myVariableName$;
myVariableName;
$$$$$$myVariableName$$$$$$$$
如果你想测试JavaScript变量名的合法性,可以使用下面的链接进行测试:
[Variable Name Validator](https://mothereff.in/js-variables)
同时,这里还有MDN的链接,其中解释了允许使用的字符:
[MDN allowed characters link](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Values,_variables,_and_literals)
在每个对象中,AngularJS包含了大量的信息,其中一些是给AngularJS本身使用的,而另一些是给开发者使用的。这意味着一些信息可能不可编辑,但是可以作为参考来使用。
然而,在将来的版本中,一些私有的标识符可能会消失,因为AngularJS团队希望开发者不要使用这些保留/私有的名称。
在这个问题中,AngularJS的解释如下:
$前缀命名约定:你可以创建自己的服务,事实上在第11步中我们将这样做。作为命名约定,Angular的内置服务、Scope方法和一些其他的Angular API在名称前面加上了$前缀。
$前缀的存在是为了给Angular提供的服务提供命名空间。为了避免冲突,最好不要给你的服务和模型命名以$开头的任何内容。
如果你检查一个Scope,你可能还会注意到一些以$$开头的属性,这些属性被认为是私有的,不应该被访问或修改。
总结一下,$和$$在AngularJS中只是被允许用在变量名中的字符,它们没有特殊的含义。在变量命名时,为了避免冲突,应该避免使用以$开头的名称。