Angular - return $modal 承诺并拒绝
Angular - return $modal promise and reject it
我正在尝试编写一个函数,该函数在关闭后打开 angular-ui 模态 window 和 return 承诺。这通常很容易,你只需 return 模态实例,但在这种情况下,即使 window 已关闭 属性 我也想检查 .then() 函数内的响应,可能拒绝基于状态代码的承诺,即使它已经成功。
这可能没有多大意义,所以这里有一些代码...
// 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
});
您可以 return 一个新的承诺,只有当来自 $modalInstance.result 的承诺得到解决并且您的状态代码检查正常时,该承诺才会得到解决。大致如下:
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。
我正在尝试编写一个函数,该函数在关闭后打开 angular-ui 模态 window 和 return 承诺。这通常很容易,你只需 return 模态实例,但在这种情况下,即使 window 已关闭 属性 我也想检查 .then() 函数内的响应,可能拒绝基于状态代码的承诺,即使它已经成功。
这可能没有多大意义,所以这里有一些代码...
// 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
});
您可以 return 一个新的承诺,只有当来自 $modalInstance.result 的承诺得到解决并且您的状态代码检查正常时,该承诺才会得到解决。大致如下:
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。