Angular ng-if不重新编译指令

时间:2014-09-02 08:15:38

标签: javascript angularjs angularjs-directive

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

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

例如:

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

有同样的问题。

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

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

重构:

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

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

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