有没有人知道在angularJS中使用美元方法和变量背后的原因是指示angularJS在消化过程中避免检查这些值?所以,如果角度遇到$scope.$value和$scope.value,然后它会避免检查前,因为它与它的变量名称美元字符前缀?
ven*_*kat 115
它只是来自以下代码段http://docs.angularjs.org/tutorial/step_05的命名约定
'$'前缀命名约定
您可以创建自己的服务,实际上我们将在第11步中完成.作为命名约定,angular的内置服务,Scope方法和一些其他角度API都有'$'前缀在名字前面.在命名服务和模型时,请勿使用'$'前缀,以避免任何可能的命名冲突.
http://docs.angularjs.org/guide/concepts#angular_namespace
角度命名空间
为了防止意外名称冲突,Angular前缀可能与$发生冲突的对象的名称.请不要在代码中使用$前缀,因为它可能会意外地与Angular代码冲突.
Roy*_*ove 87
有几次Angular会忽略以美元符号为前缀的变量:
使用该{{ }}指令时,angular不会显示嵌套 $
变量.例如,这只显示visible属性.
<div ng-init="n = { visible: 'foo', $ignore: 'bar' };">{{ n }}</div>
Run Code Online (Sandbox Code Playgroud)此外,在范围对象上添加显式观察程序时,对具有此对象的前导美元符号的属性的更改将不会触发观察程序.看到这个更新的小提琴.
angular.equals() 忽略带有前缀的键$.
dal*_*ard 29
该$前缀表示变量,参数,属性,或属于的角的核心方法.
源自框架内但实际上不是API的一部分的对象的属性可以以$- 或甚$$至- 开头,以表示私有方法或属性.这与_前缀在其他库中经常使用的方式相同.
它对运行时解释代码的方式没有任何影响,尽管框架本身可能赋予它特殊的含义.基本上,这是一个命名惯例,上面写着"你不应该把这个搞得一团糟".
不完全确定,但我相信AngularJS内部依赖于在摘要期间操纵这些$ -prefixed变量.检查这些变量意味着摘要永远不会稳定,因为它们可能在摘要的每个循环期间不断变化.
不要引用我的话.:)
美元($)符号还可以防止元素在某些指令中被迭代(或解释).因此,例如因为for循环中的if子句而未使用以$开头的属性: ng-repeat
if(collection.hasOwnProperty(key) && key.charAt(0) != '$')
Run Code Online (Sandbox Code Playgroud)
有人在angulars github页面上就这个话题提出了一个问题
在方法中shallowCopy,由于if子句在迭代属性时跳过了以$$开头的属性:
if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61874 次 |
| 最近记录: |