据我所知,ng-if通过编译状态重新创建指令。但是如果我在指令代码中有if / else条件影响到编译的HTML,
如何在ng-if的表达式更改后重新编译指令?因为在刷新页面后正在进行编译。如果我刷新一个页面并获得一个编译状态,之后(没有刷新页面)更改记录标志,那么在ng-if表达式中,编译状态必须是其他状态,但它不是。
例如:
<directive-one ng-if="logged"></directive-one>
我有2个这个指令的编译状态变体:有购物车项目而没有(空表)。
如果我刷新页面并被记录 - 一切都很好。如果我注销 - 指令销毁,如果我再次登录 - 指令将再次使用已记录的编译状态重新创建。
但是,如果我刷新页面并被记录 - 每次登录或注销时编译状态将是“没有购物车项目”。因为刷新页面时的编译状态是“没有购物车项目”......
答案 0 :(得分:0)
有同样的问题。
将指令从元素移动到属性修复此问题。
<directive-one ng-if="logged"></directive-one>
重构:
<div data-directive-one ng-if="logged"></div>
(不要忘记将指令格式E中的要求更改为A)
指令元素的优先级应该在那里正常工作。