我正在学习一个教程,我很难理解某个句子,该句话讨论了在Angular中命名我的属性时可能出现的问题:
它可以安静地容忍所有属性访问错误,包括不存在的父级和超出范围的数组访问的嵌套属性。
别名变量作为处理变量阴影的方法
我的英语很好,知道写的是什么,但我真的不明白什么是“不存在的父母的嵌套属性”和“别名变量作为处理变量阴影的方法”。我做了一些研究,但无法清楚地理解。
有人可以给我一个明确的解释吗?
答案 0 :(得分:1)
假设你有:
obj : {
first: {
second: [1, 2, 3]
}
}
尝试这样做:
obj.nonexistent.prop // Nested property on nonexistent parent
obj.first.second[1000] // Out of bound array access
会在javascript中引发错误,但Angular不会抛出错误
为了将变量别名化作为处理变量阴影的方法,请想象一下:
<div ng-controller="ItemsController">
<div ng-repeat="item in items" ng-init="outerCount = $index">
{{outerCount + 1}}. {{item.name}}
<div ng-repeat="item in item.items">
{{outerCount + 1}}.{{$index + 1}}. {{item.name}}
</div>
</div>
</div>
来自here
在ng-repeat中,$index
变量会在每次迭代时更改为指向循环的当前索引。因此,如果您有嵌套循环,则会丢失对外部$index
变量的引用。这是变量阴影。要使用外部变量,您可以使用ng-init
并将其设置为外部的$index
。现在,您已将别名外部$index
变量改为outerCount
。
希望这很清楚!