我正在尝试显示离子加载器,直到我的数据被收到但不知何故它的加载永远。我检查了一些解决方案,但没有奏效。这是我的代码。
$ ionicLoading.show({ 内容:'正在加载', 动画:'淡入', showBackdrop:是的, maxWidth:200, showDelay:0 });
$scope.allcourses = CourseFactory.FindFreeCourses($scope.search).then(function(result){
console.log(result);
$scope.allfreestadiums = result;
$ionicLoading.hide();
}, function(error){
console.log(error);
$ionicLoading.hide();
$ionicLoading.show({
template: 'Network Error',
scope: $scope
});
$timeout(function() {
$ionicLoading.hide();
}, 100);
})
当我只打电话时
$ scope.allcourses = CourseFactory.FindFreeCourses($ scope.search);
它工作正常,但我希望在屏幕上显示之前显示加载。 可能是什么问题?
答案 0 :(得分:1)
console.log()在设备/模拟器上的行为可能与在浏览器上的行为不同。虽然浏览器通常会将任何对象作为参数接受,例如console.log(obj),但这在设备上存在问题。您可能想尝试这样做:
console.log("some message", JSON.stringify(obj))
$ionicLoading.show({ content: 'Loading', animation: 'fade-in', showBackdrop: true, maxWidth: 200, showDelay: 0 });
$scope.allcourses = CourseFactory.FindFreeCourses($scope.search).then(function(result){
$ionicLoading.hide();
$scope.allfreestadiums = result;
console.log("success", JSON.stringify(result));
}, function(error){
$ionicLoading.hide();
console.log("error", JSON.stringify(error));
})
console.log()函数也可能失败,因为调用时未定义控制台。这取决于您的测试方式以及环境是否默认公开控制台变量。它有点像薛定谔方案 - 打开开发控制台的行为会使问题消失,因为在某些浏览器上执行此操作时会定义控制台变量。尝试注释掉console.log()调用并将$ ionicLoading.hide()移到这些回调的顶部。
或者您可以在调用console.log()之前检查window.console是否存在,如下所示:
$ionicLoading.show({ content: 'Loading', animation: 'fade-in', showBackdrop: true, maxWidth: 200, showDelay: 0 });
$scope.allcourses = CourseFactory.FindFreeCourses($scope.search).then(function(result){
$ionicLoading.hide();
window.console && console.log("success", JSON.stringify(result));
$scope.allfreestadiums = result;
}, function(error){
$ionicLoading.hide();
window.console && console.log("error", JSON.stringify(error));
})