如何从另一个视图正确重新启动$ 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从另一个视图控制器重新加载表视图