我是 Angular 的新手,我正在公司的一個專案中作業,我必須實作洗掉功能。
我已經設法實作用戶繼續洗掉的功能。但如果他在最后一分鐘改變主意并取消洗掉確認,我會收到錯誤訊息。
這是我的代碼:
$scope.deleteButtonClick = function () {
if ($scope.hasRemove()) {
$scope.deleting = true;
//Fetch the promise and add our own state management to it
var promise = $scope.removeAction(); // this remove action calls the below 'remove' function
if (!promise.then) {
throw "Wizard's bound 'deleteAction' must return a closure."
}
promise.then(function () {
$scope.deleting = false;
}, function () {
$scope.deleting = false;
});
}
};
以下是我要回傳閉包的洗掉函式。
$scope.remove = function () {
if (confirm("Confirm Delete?")){
var data = {};
data.id = EventService.event.id;
// delete
return $http.post('/admin/deleteAjax/', data).then(
function (response) {
if (response.data.status == 'success') {
RegistryService.getItem("successModal").show();
setTimeout(()=>{
location.replace("/admin/index")
}, 2000);
}
else if (response.data.status == 'error'){
RegistryService.getItem("errorModal").show();
}
}
);
}
else {
// This is where I need to return a closure
// when user presses 'cancel' button how can I return a closure or skip the error?
}
};
以下是我return false在該else部分中遇到的錯誤。
向導系結的“deleteAction”必須回傳一個閉包。不明確的
有誰知道如何解決這個問題?
uj5u.com熱心網友回復:
問題是$scope.remove()需要回傳一個 Promise,而塊中的else子句confirm()沒有回傳一個 Promise。
為此,您可以使用 AngularJS $q 服務創建一個 Promise 并回傳它。
所以你的else塊看起來像這樣:
} else {
// This is where I need to return a closure
// when user presses 'cancel' button how can I return a closure or skip the error?
const deferred = $q.defer(); // <------------ use $q service to create a deferred
deferred.resolve({ cancelled: true }); // <-- resolve it to whatever value you want
return deferred.promise; // <---------------- and return its promise
}
這是一個展示這種方法的小提琴。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/487637.html
