我將Bootstrap UI與 AngularJS 結合使用來顯示模式對話框,同時$http處理請求。把它想象成一個等待對話框。我想將代碼保留為一個簡單的四行代碼,我可以在這樣的不同位置插入:
$scope.foobar = function() {
var waitDialog = $uibModal.open({ templateUrl: 'waitDialog.html' });
waitDialog.result.catch(function() { /** Rejection ignored */ });
MyService.doSomething()
.then(function onSuccess(response) {
waitDialog.dismiss('Success.');
// ...
})
.catch(function onError(response) {
waitDialog.dismiss('Failed.');
});
};
這在大多數情況下都可以正常作業,但模式對話框時不時地不會以編程方式關閉。它保持打開狀態,即使 HTTP 請求回傳了結果。我在對話框中添加了一個關閉按鈕,因此用戶仍然可以通過$dismiss()手動呼叫來關閉它。
但是,我不明白為什么不總是以編程方式關閉對話框。我知道這樣$http一個事實,這會回傳一個承諾,并且可能會有延遲。但是我通過將waitDialog物件列印到控制臺來除錯代碼,它似乎總是既定義又相同的物件。我沒有看到任何范圍問題。我錯過了什么?
uj5u.com熱心網友回復:
您不能在打開模態之前關閉它,所以應該 waitDialog.opened.then(() => waitDialog.dismiss())
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/312561.html
