我正在使用
$scope.$on('$routeChangeStart', function (event, toState, toParams, fromState, fromParams)
{
//content
$log.log(toState);
}
跟踪我导航到的路线。当我打印" toState"它给了我一个对象,如下所示。
{
$$route: Object
loadedTemplateUrl: "views/homepage.html"
locals: Object
params: Object
pathParams: Object
scope: ChildScope
__proto__: Object
}
在这里,我不是100%肯定" $$"在' $$路线'。有人可以解释$和$$之间的区别。
答案 0 :(得分:2)
也许我们可以添加JiříPospíšil所包含的链接:
除了对Angularjs有意义之外,'$$'或'$'只是变量名中允许的字符。 Angularjs使用两者来识别您和他们自己的开发团队的重要性,如“类似链接”中所述。
您可以用同样的方式命名所有变量;但要避免命名碰撞,请远离这种做法。以下是一些例子,如果你做了......
$$$$ myVariableName; $ myVariableName $; myVariableName ; $$$$$$ myVariableName $$$$$$$$
如果您愿意,可以使用以下链接来测试JS变量名称:
以下是MDN的链接,解释了允许的字符:
以下是文字:
变量
您可以将变量用作应用程序中值的符号名称。名为标识符的变量名称符合某些规则。 JavaScript标识符必须以字母,下划线(_)或美元符号($);
开头后续字符也可以是数字(0-9)。因为JavaScript区分大小写,所以字母包括字符“A”到“Z”(大写)和字符“a”到“z”(小写)。
从JavaScript 1.5开始,您可以在标识符中使用ISO 8859-1或Unicode字母,例如å和ü。您还可以将\ uXXXX Unicode转义序列用作ientifiers中的字符。
合法名称的一些示例是Number_hits,temp99和_name。
Angulajs在每个对象中包含了相当多的信息;一些项目适用于Angularjs,一些项目适用于开发人员,这意味着某些项目可能无法编辑,但如果您将其用于此目的,则所有项目都应该可供参考。
但是,在将来的版本中,任何私有标识符都可能会消失,因为Angularjs团队希望开发人员不要使用保留/私有名称。
更新:对某些私有标识符进行深入研究也可能会让人们了解Angularjs;引擎盖下可以这么说。
在发布的“类似链接”的情况下,这是Angularjs所说的:
$前缀命名约定您可以创建自己的服务 事实上,我们将在第11步中做到这一点。作为命名惯例, Angular的内置服务,Scope方法和其他一些Angular API在名称前面有一个$前缀。
$前缀用于命名空间Angular提供的服务。至 防止冲突最好避免命名您的服务和模型 任何以$开头的东西。
如果您检查范围,您可能还会注意到一些属性开始 与$$。这些属性被认为是私有的,不应该是 访问或修改。