javascript - Angular - 返回 $modal promise 并拒绝它

标签 javascript angularjs promise angular-ui

我正在尝试编写一个函数来打开一个 angular-ui 模式窗口,并在它关闭后返回一个 promise 。这通常很容易,您只需返回模态实例,但在这种情况下,即使窗口关闭属性我也想检查 .then() 函数内的响应并可能拒绝基于状态代码的 promise ,即使它已经成功了。

这可能没有多大意义,所以这里有一些代码......

// Function which should return a promise
var myFunc = function(){

    var modalInstance = $modal.open({
        templateUrl: 'xxx',
        controller: 'yyy',
    });

    return modalInstance.result.then(function (result) {

        // If the login was successful then resolve
        if(result && result.success === true){

            // What goes here?

        }

        // If it was uncuccessful then reject, even though it was closed successfully.
        else{

            // What goes here?

        }


    }, function () {
        $log.info('Modal was closed unsuccessfully');
    });


}


myFunc.then(function(){
    // DO something
});

最佳答案

您可以返回一个新的 promise ,只有当来自 $modalInstance.result 的 promise 得到解决并且您的状态代码检查正常时,该 promise 才会得到解决。类似的东西:

var myFunc = function(){

    var modalInstance = $modal.open({
        templateUrl: 'xxx',
        controller: 'yyy',
    });

    var deferred = $q.defer();
    modalInstance.result.then(function() {
        if (/* status code checks ok */) {
            deferred.resolve();
        }
        else {
            deferred.reject();
        }
    }, function() { 
        deferred.reject();
    });

    return deferred.promise;
}

参见 docs on $q .

关于javascript - Angular - 返回 $modal promise 并拒绝它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33402663/

相关文章:

javascript - 将嵌套对象数组值放入另一个数组

ruby-on-rails - 使用不同查询响应 html 和 json 的一个 Rails 路由

javascript - 返回 promise 方式的差异

javascript - 使用 JqueryAJAX 中的 ".then"到 "normal"函数?

javascript - 异步关系上的 Ember 数据计算属性

javascript - 从任何给定字符串中删除任何给定字符

javascript - 为任何文件类型 JS 创建下载链接

javascript - PushSubscription.endPoint 会随着时间的推移而变化吗?

angularjs - ng-repeat 破坏了 .form-inline 中的 Bootstrap 样式

javascript - 我需要在 NG-SHOW 和 NG-HIDE 上使用 NGIF/NGSWITCH 吗?