Angular.js:观察一个对象的高度并更新其他对象的填充

Pau*_*aul 3 events resize angularjs

我可以在一个指令中查看一个对象的属性(实际上是clientHeight).但是如何根据这个高度更改其他对象的填充顶部?我知道如何使用jQuery,但我正在寻找一种Angular方式.

在Angular中,可以使用指令访问某些页面元素.好的,但是如何访问同一指令中的其他页面元素?

Mar*_*cok 5

有很多方法可以做到这一点.对于下面的所有建议,假设您有两个指令 - 一个用于监视clientHeight,另一个用于调整填充.

  • 创建一个服务(注入两个指令).让第一个指令修改服务中的对象属性(例如,someObj.prop1).另一个指令$监视该对象属性.
  • 使用事件.让第一个指令$ emit或$ broadcast一个事件,第二个指令可以使用$ on(在其链接函数或其自己的控制器中)监听它.
  • 如果存在祖先关系,则可以require在后代指令中使用祖先指令的控制器.有关示例,请参阅AngularJS:使用不同父级的重用组件.

  • 不推荐,但另一种选择:使用$ rootScope而不是服务:将$ rootScope注入两个指令.让第一个指令修改$ rootScope上的对象属性.另一个指令$监视该对象属性.

  • @Trevor,如果使用指令的两个元素是相关的并且总是/自然地具有祖先 - 后代关系,那么我将使用`require`.如果可能(现在或将来)在这些指令之间进行一些额外的信息共享,即服务.如果这是一次性快速完成的应用程序,或者我感觉很懒,$ rootScope或事件. (2认同)