Angularjs ionic1在加载下一个视图之前等待它的http响应
我正在使用ionic创建一个应用程序,当我更改视图时,通过http请求从api检索数据。在控制器的数据完全加载之前,我看到了视图: 如何加载下一个控制器的数据以仅查看最终结果: 此处是开始更改视图的按钮:Angularjs ionic1在加载下一个视图之前等待它的http响应,angularjs,ionic-framework,Angularjs,Ionic Framework,我正在使用ionic创建一个应用程序,当我更改视图时,通过http请求从api检索数据。在控制器的数据完全加载之前,我看到了视图: 如何加载下一个控制器的数据以仅查看最终结果: 此处是开始更改视图的按钮: <ion-item class="item-thumbnail-left item-icon-right" ng-repeat="inscription in inscriptions" ng-click="loadActiProfil({{inscription}})" href=
<ion-item class="item-thumbnail-left item-icon-right" ng-repeat="inscription in inscriptions" ng-click="loadActiProfil({{inscription}})" href="#/app/activite">
提前感谢您从用户体验的角度来看,您不应该等待HTTP响应来启动导航转换。ionic提供了一个名为的服务,允许显示和隐藏微调器(带有黑色和透明的背景)。您可以使用它让您的用户明白他/她应该等待。但我个人的观点已经够了
关于您的需要:
- 不要使用
来更改当前状态,您最好使用href
,因为它应该使用angular ui router(当然,也是爱奥尼亚的路由器)来完成。注意:ui sref
需要一个状态名,而不是URI(例如,ui-sref
)“app.home”
- 使用您的方法
仅当您的数据可用时,才可通过编程方式从以前的状态切换到新状态,这要归功于服务LoadActivProfil
及其方法$state
(即:go
将带您到状态app.home>)$state.go('app.home')
TL;DR:如果您需要以编程方式切换当前状态,请使用
$state.go(stateName)
,而不是ui sref
(或href
)。我使用$state.go()转到下一个视图和$ionicLoading,但我仍然在加载屏幕后面看到加载,这真的很难看。有没有办法显示加载屏幕、等待下一个控制器的http响应、显示下一个视图并最终隐藏laoding屏幕?过程是:1-显示$ionicLoading,2-发送http请求,3-在http响应回调中:-3.1隐藏$ionicLoading-3.2$state。转到您的状态。您必须显示ionic加载并在“主流”中发送http请求,然后在给$http的回调中执行其余操作(如果这是您用来执行http请求的话)。很抱歉,如果我在第一个控制器作用域中执行请求(数据($scope.data=data),然后在state.go(第二个控制器)中执行请求,我看不到如何做到这一点数据在第二个视图中不可见。为确保不可见,数据必须由第一个控制器获取。但那是另一个问题!使用AngularJS,您可以创建一个服务/工厂来存储两个控制器的数据。实现转换的另一种方法(更干净)是在第二个视图上显示离子微调器,除非“数据”已初始化。然后,一旦它是,并且只有在这个时候,显示您的当前模板,填充了您的API发送的数据。