我调用API并在$ionicView.beforeEnter
中返回绑定响应。但是,在输入视图时,有时我会加载视图但数据在几秒钟之后才会被绑定,尤其是在网络连接不良时。怎么可以解决这个问题?
这会因为我的API调用是异步的吗?
angular.module('app').controller(function($scope, ApiMethod) {
$scope.$on("$ionicView.beforeEnter", function(event, data){
ApiMethod.GetFormInfo().$promise.then(function (res) {
$scope.res = res;
}, function (errRes) {
})
});
});
<ion-content>
<form name="form">
<div class="list">
<label class="item item-input">
<input type="text" placeholder="First Name" ng-model="res.firstName">
</label>
<label class="item item-input">
<input type="text" placeholder="Last Name" ng-model="res.lastName">
</label>
<label class="item item-input">
<textarea placeholder="Comments" ng-model="res.comments"></textarea>
</label>
</div>
<button type="submit">Submit</button>
</form>
</ion-content>
答案 0 :(得分:1)
是的,由于暂停异步ApiMethod
调用,存在闪烁。为了在我的Ionic应用程序中优雅地处理它,我使用$ionicLoading
。这将“冻结”用户移动,直到数据被加载。我认为最好通知他们加载然后让他们问一个空白视图。
实现:
angular.module('app').controller(function($scope, ApiMethod, $ionicLoading) {
$scope.show = function() {
$ionicLoading.show({
template: 'Loading...'
}).then(function(){
console.log("The loading indicator is now displayed");
});
};
$scope.hide = function(){
$ionicLoading.hide().then(function(){
console.log("The loading indicator is now hidden");
});
};
$scope.$on("$ionicView.beforeEnter", function(event, data){
// Show loading
$scope.show();
ApiMethod.GetFormInfo().$promise.then(function (res) {
$scope.res = res;
// Hide loading
$scope.hide();
}, function (errRes) {
})
});
});