混淆Angular JS教程中的术语

时间:2016-01-01 22:43:20

标签: angularjs properties naming

我正在学习一个教程,我很难理解某个句子,该句话讨论了在Angular中命名我的属性时可能出现的问题:

  

它可以安静地容忍所有属性访问错误,包括不存在的父级和超出范围的数组访问的嵌套属性。

     

别名变量作为处理变量阴影的方法

我的英语很好,知道写的是什么,但我真的不明白什么是“不存在的父母的嵌套属性”和“别名变量作为处理变量阴影的方法”。我做了一些研究,但无法清楚地理解。

有人可以给我一个明确的解释吗?

1 个答案:

答案 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

希望这很清楚!