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

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

问题描述:

我可以在指令中观察一个对象的属性(实际上是clientHeight)。但是如何根据这个高度来改变其他物体的填充顶部?我知道如何使用jQuery来做到这一点,但我正在寻找一种Angular方式。Angular.js:观察一个对象的高度并更新其他对象的填充

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

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

  • 创建一个服务(注入到两个指令中)。让第一个指令修改服务中的对象属性(例如,someObj.prop1)。其他指令$监视该对象的属性。
  • 使用事件。让第一个指令$ emit或$广播一个事件,第二个指令可以使用$ on(在其链接函数或其控制器中)监听它。
  • 如果存在祖先关系,则可以在后代指令中指定require祖先指令的控制器。一个例子见AngularJS: reuse component with different parent

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

+0

+1。如果您要在应用程序中执行此操作,那么您更喜欢哪种方法?为什么? – 2013-02-28 16:10:21

+2

@Trevor,如果使用指令的两个元素是相关的,并且始终/自然地具有祖先 - 后裔关系,那么我会使用'require'。如果可能(现在或将来)在这些指令之间共享一些额外的信息,即服务。如果这是一款一劳永逸的快速应用程序,或者我感觉很懒,$ rootScope或事件。 – 2013-02-28 16:17:16