javascript - ngif什么时候触发?

标签 javascript jquery angularjs

我目前正在研究在模态窗口中打开指令的按钮的功能,并且我想创建简单的功能是可能的,所以我采用了模态容器并用与指令标记它:

<div ng-if="vm.Modal.Modal1">
<directive-for-modal-one params="vm.params1"><directive-for-modal-one>
</div>
 <div ng-if="vm.Modal.Modal2">
<directive-for-modal-two params="vm.params2"><directive-for-modal-two>
</div>
....

在 Controller 中,有一个函数可以更改所有该模态的事件,vm.Modal.n

function test(name){
        CloseModal();

        vm.Modals[name]= true

    }
function CloseModal() {

        for (var property in vm.Modals) {

            vm.Modals[property]= false;

            }
    }

问题在于,如果您单击打开同一个模态两次,即使 ng-if 的值都为 false,并且在该值为 true 后,重新打开的模态是旧模态,不会被破坏。我知道发生这种情况是因为 javascript 是单线程,虽然它是函数,但它不会关闭,当我仍在函数内时,当这个值发生更改时,如何进行 Angular 检查。某种刷新或检查命令?

最佳答案

您可以尝试将逻辑放在 $scope.$evalAsync 中的 CloseModal() 之后。

CloseModal();

$scope.$evalAsync(function(){
    vm.Modals[name]= true
})

这将要求代码在当前 $digest() 之后执行

关于javascript - ngif什么时候触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38478968/

相关文章:

jquery - 如何在选择框上显示垂直滚动条

javascript - 如何在javascript中将字节码转换为zip文件

javascript - 图像中的阴影 React Native

javascript - 设置表列等长

javascript - 用于获取用户输入并将其传递给批处理文件的 GUI

asp.net jquery 添加带有文本框的行(克隆行)并动态下拉

javascript - 拖放后div大小增加

javascript - 这个 jQuery 在做什么?

Javascript 重用 Promise 来管理多个调用

javascript - ng-change 如果所选值大于 6,则更改 td 背景颜色