代码之家  ›  专栏  ›  技术社区  ›  Kévin Duguay

混淆Angular JS教程中的术语

  •  1
  • Kévin Duguay  · 技术社区  · 9 年前

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

    它悄悄地容忍所有属性访问错误,包括不存在的父级上的嵌套属性和越界数组访问。

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

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

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

    1 回复  |  直到 9 年前
        1
  •  1
  •   UtsavShah    9 年前

    假设您有:

    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重复中 $index 变量每次迭代都会更改为指向循环的当前索引。因此,如果有嵌套循环,则会丢失对外部循环的引用 $索引 变量这是 可变阴影 。要使用外部变量,可以使用 ng-init 并将其设置为 $索引 外部现在,你已经 混叠的 外部 $索引 变量为 outerCount .

    希望这是清楚的!