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

时间:2018-02-11 18:55:45

标签: angularjs angularjs-scope parent

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

所以稍后,我读到你可以将一些数据传递给一个带有"绑定的组件"从父组件,所以内部组件不能访问父范围,但从父范围获取信息。所以在这里,直到它,确定

但是当我用"绑定"在组件中,您可以传入"属性"通过引用,所以如果在内部组件中我修改了这个属性,是不是我可以访问父作用域,但是我正在修改父作用域,对吧?所以,问题情况可能再次发生,对吗?

谢谢

1 个答案:

答案 0 :(得分:1)

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

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