如何使用ng-if指令显示/隐藏

时间:2014-10-13 09:02:47

标签: angularjs

我想显示/隐藏模板。所以我将使用指令来实现这一点。

在一个模板中的代码下方。

 <div resupload ng-if="resuploadvisible"></div>

当点击关闭按钮时,我在指令中将resuploadvisible值更改为false。

scope.cancelupload = function () {
                scope.resuploadvisible = false;
};
 scope.openupload = function () {
                    scope.resuploadvisible = true;
    };

即使 resuploadvisible 设置为false,弹出div也没有关闭。

有趣的是,如果我将 ng-if 更改为 ng-show ,则弹出div正在打开&amp;关闭没有任何问题。

这是什么样的行为?请简要解释一下。

提前致谢。

1 个答案:

答案 0 :(得分:1)

ngIf指令根据{expression}删除或重新创建DOM树的一部分。

使用ngIf删除元素时,其范围将被销毁,并在元素恢复时创建新范围。

ngIf内创建的作用域使用原型继承从其父作用域继承。

这一点的一个重要含义是ngModel内使用ngIf来绑定primitive范围内定义的javascript parent。在这种情况下,对子作用域内的变量所做的任何修改都将覆盖(隐藏)父作用域中的值。

要解决此问题,请使用$parent访问您父母范围内的财产:

<div resupload ng-if="$parent.resuploadvisible"></div>