angularjs中$和$$之间的差异

时间:2015-01-13 17:29:21

标签: angularjs

我正在使用

$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%肯定" $$"在' $$路线'。有人可以解释$和$$之间的区别。

1 个答案:

答案 0 :(得分:2)

也许我们可以添加JiříPospíšil所包含的链接:

Similar Link

除了对Angularjs有意义之外,'$$'或'$'只是变量名中允许的字符。 Angularjs使用两者来识别您和他们自己的开发团队的重要性,如“类似链接”中所述。

您可以用同样的方式命名所有变量;但要避免命名碰撞,请远离这种做法。以下是一些例子,如果你做了......

  

$$$$ myVariableName; $ myVariableName $; myVariableName ; $$$$$$ myVariableName $$$$$$$$

如果您愿意,可以使用以下链接来测试JS变量名称:

Variable Name Validator

以下是MDN的链接,解释了允许的字符:

MDN allowed characters link

以下是文字:

  

变量

     

您可以将变量用作应用程序中值的符号名称。名为标识符的变量名称符合某些规则。 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提供的服务。至   防止冲突最好避免命名您的服务和模型   任何以$开头的东西。

     

如果您检查范围,您可能还会注意到一些属性开始   与$$。这些属性被认为是私有的,不应该是   访问或修改。