我想显示/隐藏模板。所以我将使用指令来实现这一点。
在一个模板中的代码下方。
<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;关闭没有任何问题。
这是什么样的行为?请简要解释一下。
提前致谢。
答案 0 :(得分:1)
ngIf
指令根据{expression}删除或重新创建DOM树的一部分。
使用ngIf
删除元素时,其范围将被销毁,并在元素恢复时创建新范围。
ngIf
内创建的作用域使用原型继承从其父作用域继承。
这一点的一个重要含义是ngModel
内使用ngIf
来绑定primitive
范围内定义的javascript parent
。在这种情况下,对子作用域内的变量所做的任何修改都将覆盖(隐藏)父作用域中的值。
要解决此问题,请使用$parent
访问您父母范围内的财产:
<div resupload ng-if="$parent.resuploadvisible"></div>