AngularJS:如何强制指令刷新?

时间:2014-05-24 01:30:59

标签: angularjs

我有一个用户编辑器指令,显示用于编辑$ scope.User的UI。 当$ scope.User为null时,编辑器位于' Create'模式意味着一旦提交数据就会创建一个新用户。

此外,该指令将进行一些布局计算。问题是,在显示编辑器之前,布局计算不正确。例如,在Firefox下,当一个元素不可见时,高度始终为0.换句话说,当编译和链接指令时,元素的布局是错误的。

我的问题是如何强制指令在可见时刷新?

我尝试了以下方法:

  1. 更改$ scope.User 该指令监视$ scope.User。更改它可以使指令有机会刷新。但这不是一个好主意,在创建新用户时应该为null。

  2. 添加新的'可见' var在$ scope中,并观察它 问题是指令的父元素(以及父母的父元素)也可以变得可见和不可见。有没有办法收到通知?

  3. 有什么好主意吗?

1 个答案:

答案 0 :(得分:1)

ng-if添加到指令的元素:

<my-directive ng-if="UserCreated"></my-directive>

并使用另一个事件触发对DOM的添加:

<button ng-click="UserCreated = !UserCreated">Toggle User</button>

Demo

此处,链接功能将在ng-if表达式为真的位置触发。

我已经对你为这个答案想要做什么做了一些假设。如果它与您要查找的内容不符,请使用代码示例更新您的问题,如果可能,请使用简化的Plunker来更新您的问题。