我正在为项目使用离子框架,并且遇到了ionicLoading对话框的问题。
我创建了一个工厂,我将其注入不同的控制器以显示某些消息。我显示加载对话框,然后调用进行api调用的工厂。当服务返回错误回调时,我隐藏了对话框。问题是,当我显示第二个对话框时(在加载对话框关闭后),它永远不会显示。
这是我的displayMessage工厂:
factory('displayMessage', function($ionicLoading) {
var displayMessage = {
// Just displays a loading dialog. You need to call hideDialog to hide it. See LoginCtrl for an example.
showLoading : function() {
$ionicLoading.show({
templateUrl: 'templates/dialogs/loading.html'
});
},
// Hides the loading dialog
hideLoading : function() {
$ionicLoading.hide();
},
// Hide loading dialog and display toast
hideLoadingComplex : function(message){
$ionicLoading.hide();
$ionicLoading.show({
template: 'Blah',
duration : 1500
});
},
// Displays a short toast message (1.5 seconds), requires a string value
showToastShort : function(message) {
$ionicLoading.show({
template: message,
duration : 1500
});
},
// Displays a long toast message (2.5 seconds), requires a string value
showToastLong : function(message) {
$ionicLoading.show({
template: message,
duration : 2500
});
}
};
return displayMessage;
这是我的控制器(我调用代码,只是错误回调):
.error(function(data, status, headers, config) {
// If details checked client side, but service returns error code
if (status === 400 && !(loginInfo.username.$invalid || loginInfo.password.$invalid)) {
errorMessage = 'Incorrect Username or Password';
} else if (status === 500) {
errorMessage = 'Could not connect to server';
}
console.log("FAILED LOGIN" + errorMessage);
displayMessage.hideLoadingComplex(errorMessage);
});
所有代码都会在我显示消息之前触发控制台,但是消息永远不会显示。任何人都可以帮我解决这个问题吗?提前谢谢。
答案 0 :(得分:0)
我认为您不应该使用$ionicLoading
来显示Toast消息。相反,我建议你使用$ionicPopup。它可以完全定制,以满足您的需求。
此外,您可以通过创建两个服务来更好地组织它,例如LoadingService
和ErrorDisplayService
。然后,您可以直接从控制器中使用它们。你可以做点什么
LoadingService.show();
$http.get(...).success(function(data){
LoadingService.hide();
ErrorDisplayService.show(data);
}).
error(function(){
LoadingService.hide();
})
祝你好运!