我正在构建一个在模板内使用 ng-if 的指令。奇怪的是,提供给链接函数的元素没有扩展ng-if代码,它只是ng-if的注释行。经过一番尝试,我发现通过将链接代码包装在 $timeout 中似乎可以使其正常工作,但我想知道这是否不是正确的处理方法......更重要的是,为什么会发生这种情况。
我添加了一个 plunk 来演示:http://plnkr.co/edit/Gl7v8yJLevi664nUKcFY?p=preview http://plnkr.co/edit/Gl7v8yJLevi664nUKcFY?p=preview
大多数指令实际上在 $watch() 中完成大部分逻辑。例如 ng-if 将在其属性上设置一个监视,然后在更改时渲染/删除 dom。监视在摘要周期内执行,因此即使已编译和链接指令,监视也尚未运行以确定是否应显示 if 。
EDIT:
您可能应该考虑一下您实际上在做什么,以确保这是否是您想要的。请记住,ng-if
是动态的。因此,在任何时候,它都可能根据 items 数组是否为空而被删除或添加。
这意味着,即使您设法将 dom 操作推迟到 if 渲染之后,您也会面临 if 消失并返回的风险(此时您的 css 代码将不会再次运行)。
更好的方法是设置一个手表并在手表中添加 css,或者更好的是,使用 ng-class 并在模板中添加 css。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)