Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 确认框正在阻塞/暂停_Angularjs - Fatal编程技术网

Angularjs 确认框正在阻塞/暂停

Angularjs 确认框正在阻塞/暂停,angularjs,Angularjs,我有一个ng click=“myFunc(aEntry)” 然后myFunc是这样的: MODULE.myFunc = function(aEntry) { aEntry.hilite = true; if (!confirm('Are you sure?')) { aEntry.hilite = false; return; } }; 但是,它不会更新dom以突出显示它。确认框似乎

我有一个
ng click=“myFunc(aEntry)”

然后myFunc是这样的:

    MODULE.myFunc = function(aEntry) {
        aEntry.hilite = true;
        if (!confirm('Are you sure?')) {
            aEntry.hilite = false;
            return;
        }
    };

但是,它不会更新dom以突出显示它。确认框似乎正在暂停它。有人知道变通方法吗?

这是因为
确认
是一种阻塞功能。我知道您想更改ui,但是

aEntry.hilite = true;
这不是UI更改。这是合乎逻辑的变化。您可能有一个事件处理程序,它在您调用
confirm
后运行。您需要确保在调用
确认之前执行突出显示ui操作。有几种方法可以做到这一点

最原始的方法是使用
setTimeout
并将
confirm
调用放入其中,使用的时间肯定比等待ui处理程序执行所需的时间长

更好的方法是使用
setInterval
,直到发生ui更改


但最好的方法是传递
confirm
,并在其周围使用
函数
作为ui更改的回调,或者在调用
confirm

之前触发ui更改事件,因为
confirm
是一个阻塞函数。我知道您想更改ui,但是

aEntry.hilite = true;
这不是UI更改。这是合乎逻辑的变化。您可能有一个事件处理程序,它在您调用
confirm
后运行。您需要确保在调用
确认之前执行突出显示ui操作。有几种方法可以做到这一点

最原始的方法是使用
setTimeout
并将
confirm
调用放入其中,使用的时间肯定比等待ui处理程序执行所需的时间长

更好的方法是使用
setInterval
,直到发生ui更改


但是最好的方法是在调用
confirm

之前传递
confirm
,并在其周围包装一个
函数
,作为ui更改的回调,或者触发ui更改事件。您可以再详细说明一点或创建一个小提琴吗?您可以再详细说明一点或创建一个小提琴吗?