Angular ng-if不重新编译指令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Angular ng-if不重新编译指令相关的知识,希望对你有一定的参考价值。

据我所知,ng-if通过编译状态重新创建指令。但是如果我在指令代码中有if / else条件影响到编译的html

如何在ng-if的表达式改变后重新编译指令?因为在刷新页面后正在进行编译。如果我刷新一个页面并获得一个编译状态,之后(没有刷新页面)更改记录标志,那么在ng-if表达式中,编译状态必须是其他状态,但事实并非如此。

例如:

<directive-one ng-if="logged"></directive-one>

我有2个这个指令的编译状态变体:有购物车项目而没有(空表)。

如果我刷新页面并被记录 - 一切都很好。如果我注销 - 指令销毁,如果我再次登录 - 指令将再次使用已记录的编译状态重新创建。

但是,如果我刷新页面并被记录 - 每次我登录或注销时编译状态将是“没有购物车项目”。因为刷新页面时的编译状态是“没有购物车项目”...

指令代码:http://pastebin.com/KpCHwpcc

答案

有同样的问题。

将指令从元素移动到属性修复此问题。

<directive-one ng-if="logged"></directive-one>

重构:

<div data-directive-one ng-if="logged"></div>

(不要忘记将指令格式E中的要求更改为A)

指令元素的优先级应该在那里正常工作。

以上是关于Angular ng-if不重新编译指令的主要内容,如果未能解决你的问题,请参考以下文章

以角度重新编译元素,但不重新绑定角度事件[重复]

Angular:防止资产文件夹发生更改时自动重新编译

生成视图重新编译的指令

编译器指令重新排序

Angular App 无需重新编译即可动态加载插件

重排序