0

奇妙な問題があり、明らかな何かが欠けていることを願っています。「Sweet Alert」は、よりきれいな角度のモーダルをポップするだけisConfimedです。モーダルで「OK」をクリックすると、ブロックが実行されます。

ここに問題があります-「isConfirmed」ブロックEXECUTESに入れたコードはすべてログに記録できますが、スコープは更新されません。たとえば、$scope.test をブロック内で変更してからログに記録すると、ログには変更済みとして表示されますが、変更は UI に反映されません。apply/digest を試しましたが、apply/digest が既に実行されていると表示されます。

面白いことに、コードはブロックの外側で完全に実行されます (下部の例はコメントアウトされています)。もっと面白いのは何ですか?約束はテストのためにあります-それは役に立ちません。スコープが見えていないと思ったので、rootScope でブロードキャストしてみましたが、どちらも役に立ちません。

私は完全に途方に暮れています。

編集:コードをタイムアウトにすると、機能することがわかりました。なんと #@!@。

$scope.showAlert = function(){
    var deferred = $q.defer();
    SweetAlert.swal({
            text: 'Warning, click ok or else!!!',
            otherSettings: 'blah blah blah',
            function(userClickedOk){
                if(userClickedOk) {
                    //this executes when I click "Ok on pop-up")
                    //Putting code here without a promise doesn't update view model either, promise didn't help.
                    deferred.resolve(true);
                    return deferred.promise;
                }
            }
        });

        deferred.promise.then(function() {
           //If I put doSomething() in $timeout, it works...
           $scope.doSomething();
        });
    });

//If I put doSomething() here instead of the promise, it works
//$scope.doSomething();
};
4

0 に答える 0