jpe*_*lli 4 angularjs angularjs-scope
问题的例子
<div ng-show="bar !== null">hello</div>
Run Code Online (Sandbox Code Playgroud)
这是否在范围内评估为
$scope.bar !== null
Run Code Online (Sandbox Code Playgroud)
还是这样?
$scope.bar !== $scope.null
Run Code Online (Sandbox Code Playgroud)
请注意,在最后一种情况下,$ scope.null将是未定义的,并且示例似乎正常工作.
奖金:
如果bar = null则会发生这种情况
// this does not work (shows hello)
<div ng-show="bar !== null">hello</div>
Run Code Online (Sandbox Code Playgroud)
没有给出相同的结果
// this works ok (does not show hello)
<div ng-show="bar != null">hello</div>
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
Angular使用高级解析器($ parse service)来处理和评估属性表达式,就好像它们是javascript代码一样.当它工作时,它将null
比具有相同名称的范围属性排名更高的优先级.这意味着在表达式中
ng-show="bar !== null"
Run Code Online (Sandbox Code Playgroud)
Angular确实会null
视为原始null
价值.
但是,可以很容易地指示Angular要使用范围属性而不是null
原始属性.在这种情况下,您需要使用括号表示法:
ng-show="bar !== this['null']"
Run Code Online (Sandbox Code Playgroud)
最后的说明.虽然可以用类似的名称使用属性null
,undefined
等等,我不会因为它的混乱,你需要去用冗长的括号语法推荐它.
归档时间: |
|
查看次数: |
618 次 |
最近记录: |