Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs ionic1在加载下一个视图之前等待它的http响应_Angularjs_Ionic Framework - Fatal编程技术网

Angularjs ionic1在加载下一个视图之前等待它的http响应

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=

我正在使用ionic创建一个应用程序,当我更改视图时,通过http请求从api检索数据。在控制器的数据完全加载之前,我看到了视图:

如何加载下一个控制器的数据以仅查看最终结果:

此处是开始更改视图的按钮:

<ion-item class="item-thumbnail-left item-icon-right" ng-repeat="inscription in inscriptions" ng-click="loadActiProfil({{inscription}})" href="#/app/activite">

提前感谢您

从用户体验的角度来看,您不应该等待HTTP响应来启动导航转换。ionic提供了一个名为的服务,允许显示和隐藏微调器(带有黑色和透明的背景)。您可以使用它让您的用户明白他/她应该等待。但我个人的观点已经够了

关于您的需要:

  • 不要使用
    href
    来更改当前状态,您最好使用
    ui sref
    ,因为它应该使用angular ui router(当然,也是爱奥尼亚的路由器)来完成。注意:
    ui-sref
    需要一个状态名,而不是URI(例如,
    “app.home”
  • 使用您的方法
    LoadActivProfil
    仅当您的数据可用时,才可通过编程方式从以前的状态切换到新状态,这要归功于服务
    $state
    及其方法
    go
    (即:
    $state.go('app.home')
    将带您到状态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发送的数据。