有谁知道在angularJS中使用美元方法和变量背后的原因是为了指示angularJS避免在进行消化时检查那些值?因此,如果遇到$scope.$value
and时遇到angular $scope.value
,那么它将避免检查前者,因为它的变量名前带有美元字符?
$scope
,但指令有scope
。WTF?
有谁知道在angularJS中使用美元方法和变量背后的原因是为了指示angularJS避免在进行消化时检查那些值?因此,如果遇到$scope.$value
and时遇到angular $scope.value
,那么它将避免检查前者,因为它的变量名前带有美元字符?
$scope
,但指令有scope
。WTF?
Answers:
有时Angular会忽略以美元符号开头的变量:
使用{{ }}
指令时,angular将不会显示嵌套 $
变量。例如,这仅显示visible
属性。
<div ng-init="n = { visible: 'foo', $ignore: 'bar' };">{{ n }}</div>
此外,在范围对象上添加显式监视程序时,对该对象带有前导美元符号的属性的更改将不会触发监视程序。请参阅此更新的小提琴。
angular.equals()
忽略以开头的键$
。
这只是下面代码段中的命名约定 http://docs.angularjs.org/tutorial/step_05
'$'前缀命名约定
您可以创建自己的服务,实际上,我们将在步骤11中做到这一点。作为命名约定,angular的内置服务,Scope方法和其他一些angular API均带有'$'前缀。在名字前面。在命名服务和模型时,请勿使用“ $”前缀,以避免任何可能的命名冲突。
http://docs.angularjs.org/guide/concepts#angular_namespace
Angular命名空间
为防止意外的名称冲突,Angular为可能会与$冲突的对象的名称加上前缀。请不要在代码中使用$前缀,因为它可能会意外地与Angular代码冲突。
该$
前缀表示变量,参数,属性,或属于角的核心方法。
源自框架内部但实际上不是API一部分的对象的属性可以以$
-甚至$$
-表示私有方法或属性开头。这与_
其他库中经常使用前缀的方式相同。
尽管框架本身可能赋予它特殊的含义,但它对运行时解释代码的方式没有任何影响。基本上,这是一个命名约定,上面写着“您不应对此感到困惑”。
$$__$_$
–它只是一个标识符,对于解释程序没有特殊含义。
不能完全确定,但是我相信AngularJS内部依赖于在摘要过程中操纵这些带有$前缀的变量。检查这些变量将意味着摘要永远不会稳定,因为它们可能在摘要的每个周期中不断变化。
不过不要在上面引用我。:)
@MarcoS提供了指向https://thinkster.io/a-better-way-to-learn-angularjs/scope-vs-scope的链接,该链接解释了$ scope和作用域之间的区别。我发现这很有用,将其添加到其他答案中。
在角度指令中,有一个链接和控制器。链接是一个标准函数,具有一组固定的参数:作用域,元素,属性对象。
控制器的参数由Angular注入器管理,与顺序无关。注入器通过查找以$开头的参数来解析要传入的对象。
https://thinkster.io/a-better-way-to-learn-angularjs/scope-vs-scope的作者做了更好的解释。
有很大的区别,不是变量,而是控制器接收的参数。作用域参数与$ scope参数完全不同。
有关更多信息,请查看此有用的文章:http : //www.thinkster.io/angularjs/aw9kWmdnik/angularjs-scope-vs-scope