首页 文章

AngularJS:如何强制指令刷新?

提问于
浏览
1

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

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

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

我尝试了以下方法:

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

  • 在$ scope中添加一个新的'visible'var,并观察它问题是指令的父元素(和父元素的父元素)也可以变得可见和不可见 . 有办法获得通知吗?

有什么好主意吗?

1 回答

  • 1

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

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

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

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

    Demo

    这里,链接函数将在 ng-if 表达式为真的位置触发 .

    我想为这个答案做点什么.2805304_如果没有找到,请使用代码示例更新您的问题,如果可能的话,请更新Plunker以更好地展示您的目标 .

相关问题