我正在使用棱角分明的材料。
我创建了一个工厂来显示加载模式。
我可以展示它,但我无法解雇它。
你能告诉我为什么,或者告诉我该怎么做?
这是我的工厂:
(function() {
'use strict';
angular
.module('loveProjectApp')
.factory('ProgressFactory', ProgressFactory);
ProgressFactory.$inject = ['$mdDialog'];
/* @ngInject */
function ProgressFactory($mdDialog) {
var service = {
show: show,
cancel: cancel
};
return service;
////////////////
function show() {
$mdDialog.show({
templateUrl: 'miscellaneous/progress/progress.dialog.html',
parent: angular.element(document.body),
clickOutsideToClose: false,
fullscreen: false
});
}
function cancel() {
$mdDialog.hide();
}
}
})();
我称之为:
function logout() {
ProgressFactory.show();
authFactory.logout().then(function() {
ToastFactory.successToast('SUCCESSES.DISCONNECTED');
$state.reload();
ProgressFactory.cancel();
});
所以显示了加载器,但没有被解雇。
答案 0 :(得分:1)
我创建了CodePen example代码,对话框关闭了。我使用$ timeout来复制您的authFactory.logout()
来电。
这让我觉得
.then
回调函数或ProgressFactory.cancel();
之前发生了一些阻止它被执行的事情JS
.controller('AppCtrl', function($scope, $timeout, ProgressFactory) {
$scope.logout = function () {
ProgressFactory.show();
$timeout(function () {
ProgressFactory.cancel();
}, 2000);
}
})
答案 1 :(得分:0)
发现它!
我的服务器在我的应用程序使用的同一台机器上运行。
我在CreateText
看得太快,所以我在工厂添加了1s超时,现在对话框正确解除了。
它现在就像一个魅力,谢谢!