AngularJS 中的作用域原型/原型继承有哪些细微差别?
JavaScript 中的原型继承
- 原型继承是对象从其原型继承属性的机制。
- 在 AngularJS 中,作用域通常从其父作用域继承原型。
异常
- 范围指令: { ... } 创建 隔离范围 原型上不会从其父级继承。
细微差别
子作用域属性隐藏
- 通常,子作用域属性的更改不会影响父作用域
- 但是,当从子作用域将 2 路数据绑定到父作用域中的 基元 时,子作用域会创建自己的属性,隐藏相同的父属性名称。
解决方案
- 在父作用域中使用基元对象(例如,parentObj.someProp)。
- 使用$parent.parentScopeProperty.
- 定义一个函数父作用域并从子作用域调用它。
Ng-repeat
- Ng-repeat 创建子作用域并将项目值分配给新属性这些子作用域。
- 从 ng-repeat child 绑定到父作用域数组中的原语scopes 会产生独立于父数组的子作用域属性。
- 要避免这种情况,请在父作用域中使用对象数组并绑定到 ng-repeat 中的对象属性。
隔离范围
- 由范围为 { ... 的指令创建}.
- 不要从父作用域原型继承。
-
使用属性绑定父作用域属性以隔离作用域属性:
- = 两个 -方式绑定
- @ 用于单向绑定
- & 用于表达式绑定
嵌入的范围
- 由指令创建,且包含:true。
- 原型继承自父作用域。
- 同级作用域隔离如果两者都存在于指令中。
摘要
- 大多数作用域原型继承自父作用域。
- 存在异常,例如作为由指令创建的隔离范围。
- 需要注意的细微差别包括子范围属性隐藏和 ng-repeat 的特殊注意事项。
以上是原型继承如何在 AngularJS 范围内工作,以及常见的陷阱是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!