避免组件修改 Angular JS 中的父作用域组件

Avoid components modify parent scope components in Angular JS

从 Angular JS 开始,我读到组件无法访问父作用域,我的意思是,每个组件都有其独立的作用域。我读到这是为了一个组件可以修改它自己的数据而不是其他组件的数据。这有助于避免这样的情况:一个组件的某些数据可以从多个内部组件进行修改,并且很难通过查看数据来解决有问题的情况并找出哪个组件有问题。

所以后来,我读到你可以从父组件向具有 "bindings" 的组件传递一些数据,因此内部组件无法访问父范围但从父 scope.So 获取信息直到这里,没关系

但是当我读到在组件中使用 "binding" 时,我感到很惊讶,你可以通过引用传入一个 "property",所以如果在内部组件中我修改这个 属性,不是我可以访问父作用域,而是我正在修改父作用域,对吗?所以,有问题的情况可能会再次发生,对吧?

谢谢

虽然在隔离范围内访问 $parent 显然是一种反模式,但这并不意味着通过绑定修改对象不会导致问题。

这取决于父组件是否应该知道在此对象中所做的更改。如果应该,那么问题就出现了,因为深度变化检测(例如使用 $scope.watch(..., true))是昂贵的。为了避免这种情况,子组件可以通知父组件更改(作用域事件,& 绑定),或使用 = 绑定不可变对象(对象永远不会发生变化;任何更改都应导致对象正在复制到新的)。