在将现有的Ionic项目从1.13-beta更新为1.14-beta后,我遇到了一些我无法解释的行为.从一个视图状态更改为另一个视图状态时,旧视图不会离开页面.在记录角度ui路由器事件和离子导航事件时,我注意到Ionic的退出事件未被触发:
$ionicView.leave
$ionicView.beforeLeave
$ionicView.afterLeave
Run Code Online (Sandbox Code Playgroud)
文档:(http://ionicframework.com/blog/navigating-the-changes/)
有其他人经历过类似的行为吗?如果是这样,你有没有办法解决这个问题?
活动被解雇:
$stateChangeStart: App.LoadApp.Input -> App.Main.QrToken
$viewContentLoading: Main
$viewContentLoading: QrToken
$stateChangeSuccess: App.LoadApp.Input -> App.Main.QrToken
$ionicView.beforeEnter
$ionicView.afterEnter
$ionicView.enter
Run Code Online (Sandbox Code Playgroud)
如果我不将它嵌入Main中,我可以在QrToken视图中加载,所以我相信问题就在那里.任何人都可以看看我的主模板,并帮助我找到解决方案.
<div ng-controller="fbMenuController">
<ion-side-menus>
<!-- Left menu -->
<ion-side-menu side="left">
<ion-header-bar class="bar-dark">
<h1 class="title">Menu</h1>
</ion-header-bar>
<ion-content scroll="true">
<div ng-repeat="Group in fb.Model.MenuGroups">
<ion-item class="item-divider">{{Group.Name}}</ion-item>
<!-- href="#/Main/{{Page.Name}}" -->
<a ng-repeat="Page in Group.Items" nav-transition="android" nav-direction="swap" class="item" ng-click="fb.SelectPage(Page.State)">
{{ Page.Name }}
</a>
</div>
</ion-content>
</ion-side-menu>
<!-- Center content -->
<ion-side-menu-content>
<ion-header-bar class="bar-dark" ng-show="fb.Model.ShowHeader">
<div class="buttons">
<button class="button-icon icon ion-navicon" ng-click="fb.ToggleLeftMenu()"></button>
</div>
<h1 class="title">{{ fb.Model.ActivePage.Name }}</h1>
</ion-header-bar>
<ion-content scroll="true">
<ion-nav-view name="Main">
</ion-nav-view>
</ion-content>
</ion-side-menu-content>
</ion-side-menus>
</div>
Run Code Online (Sandbox Code Playgroud)
发现问题了。“主”状态是在没有属性的情况下定义的
abstract: true
Run Code Online (Sandbox Code Playgroud)
这在 Ionic 1.13-beta 中有效,但显然在 Ionic 1.14-beta 中中断。在 Ionic、AngularJS 或 Angular-ui-router 上的任何迁移帖子中都没有发现此更改,所以我不知道为什么会解决这个问题。如果有人可以详细说明这种情况下的行为,我将不胜感激,但现在我有一个解决方案。