如何从另一个视图正确重新启动$ state.go视图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从另一个视图正确重新启动$ state.go视图相关的知识,希望对你有一定的参考价值。

我尝试使用此方法将用户从一个州发送到另一个州:

$state.go('splash');

这可以正常工作,但是,当用户被发送到我的splash视图时,代码不会重新启动。

这是启动状态的html

<ion-view hide-nav-bar="true">
  <ion-content class="splash-screen" scroll="false">
    <div class="loading">
      <i class="fa fa-circle-o-notch fa-spin fa-5x fa-fw"></i>
    </div>
  </ion-content>
</ion-view>

<script id="login.html" type="text/ng-template">
  <ion-modal-view>
    <ion-header-bar class="bar bar-header bar-stable">
      <h1 class="title">Login</h1>
    </ion-header-bar>
    <ion-content>
      <div class="list padding">
        <div class="error" ng-if="errors">
          <p ng-bind-html="error_message"></p>
        </div>
        <label class="item item-input">
          <input ng-model="data.password" type="password" placeholder="Password">
        </label>
        <button class="button button-full button-positive" ng-click="login(data)">Login</button>
      </div>
    </ion-content>
  </ion-modal-view>
</script>

这是视图的控制器:

angular.module('app.controllers', [])

.controller('SplashCtrl', function($scope, $http, $state, $ionicModal, $ionicLoading, $ionicPlatform, $timeout, $localstorage, appAPI) {

  $scope.data = {};
  $scope.data.password = '';

  $ionicModal.fromTemplateUrl("login.html", {
    scope: $scope,
    animation: 'slide-in-up'
  }).then(function(modal) {
    $scope.modal = modal;
  });

  $scope.openModal = function() {
    $scope.modal.show();
  };

  $scope.login = function(data) {
     alert(data.password);
  };

  $ionicPlatform.ready(function() {

    $scope.openModal();

  });

});

当用户第一次访问splash视图时,模态按预期加载,然而,当它们从$state.go指向那里时 - 模态不加载。

有什么想法,我怎么能让这个正常工作?

答案

多次调用$ ionicPlatform.ready()

不幸的是,传递给函数的其他回调会被忽略。 (哎呀!)1

除了将回调函数作为参数之外,它还返回平台准备好的承诺。

使用承诺:

$ionicPlatform.ready().then(function() {

    $scope.openModal();

});
另一答案

我希望您在用户被路由到'splash'状态时重新加载'SplashCtrl'控制器。如果是这样,试试这个$ state.go('splash',{},{reload:true});

以上是关于如何从另一个视图正确重新启动$ state.go视图的主要内容,如果未能解决你的问题,请参考以下文章

从另一个视图重新绑定剑道网格到以前的搜索条件的正确方法是啥(后退按钮不起作用)

如何快速从另一个视图控制器重新加载表格视图

使用标签栏从另一个视图返回时如何重新加载视图控制器

如何通过iOS Objective C中的appDelegate从另一个视图控制器重新加载表视图

如何从另一个 UIViewController 重新加载 UITableViewController

如何在使用 UIpageviewcontroller 导航页面时从另一个视图控制器自动更新视图控制器上的标签