mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
20
js/angular/controller/navViewController.js
vendored
20
js/angular/controller/navViewController.js
vendored
@@ -58,6 +58,10 @@ function($scope, $element, $attrs, $compile, $controller, $ionicNavBarDelegate,
|
||||
$scope.$on('$ionicTabs.top', onTabsTop);
|
||||
$scope.$on('$ionicSubheader', onBarSubheader);
|
||||
|
||||
$scope.$on('$ionicTabs.beforeLeave', onTabsLeave);
|
||||
$scope.$on('$ionicTabs.afterLeave', onTabsLeave);
|
||||
$scope.$on('$ionicTabs.leave', onTabsLeave);
|
||||
|
||||
ionic.Platform.ready(function() {
|
||||
if (ionic.Platform.isWebView() && $ionicConfig.views.swipeBackEnabled()) {
|
||||
self.initSwipeBack();
|
||||
@@ -193,6 +197,21 @@ function($scope, $element, $attrs, $compile, $controller, $ionicNavBarDelegate,
|
||||
};
|
||||
|
||||
|
||||
function onTabsLeave(ev, data) {
|
||||
var viewElements = $element.children();
|
||||
var viewElement, viewScope;
|
||||
|
||||
for (var x = 0, l = viewElements.length; x < l; x++) {
|
||||
viewElement = viewElements.eq(x);
|
||||
if (navViewAttr(viewElement) == VIEW_STATUS_ACTIVE) {
|
||||
viewScope = viewElement.scope();
|
||||
viewScope && viewScope.$emit(ev.name.replace('Tabs', 'View'), data);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
self.cacheCleanup = function() {
|
||||
var viewElements = $element.children();
|
||||
for (var x = 0, l = viewElements.length; x < l; x++) {
|
||||
@@ -216,7 +235,6 @@ function($scope, $element, $attrs, $compile, $controller, $ionicNavBarDelegate,
|
||||
viewScope && viewScope.$broadcast('$ionicView.clearCache');
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
5
js/angular/controller/tabsController.js
vendored
5
js/angular/controller/tabsController.js
vendored
@@ -6,6 +6,7 @@ IonicModule
|
||||
function($scope, $element, $ionicHistory) {
|
||||
var self = this;
|
||||
var selectedTab = null;
|
||||
var previousSelectedTab = null;
|
||||
var selectedTabIndex;
|
||||
self.tabs = [];
|
||||
|
||||
@@ -15,6 +16,9 @@ function($scope, $element, $ionicHistory) {
|
||||
self.selectedTab = function() {
|
||||
return selectedTab;
|
||||
};
|
||||
self.previousSelectedTab = function() {
|
||||
return previousSelectedTab;
|
||||
};
|
||||
|
||||
self.add = function(tab) {
|
||||
$ionicHistory.registerHistory(tab);
|
||||
@@ -43,6 +47,7 @@ function($scope, $element, $ionicHistory) {
|
||||
|
||||
self.deselect = function(tab) {
|
||||
if (tab.$tabSelected) {
|
||||
previousSelectedTab = selectedTab;
|
||||
selectedTab = selectedTabIndex = null;
|
||||
tab.$tabSelected = false;
|
||||
(tab.onDeselect || noop)();
|
||||
|
||||
6
js/angular/directive/tabs.js
vendored
6
js/angular/directive/tabs.js
vendored
@@ -85,9 +85,9 @@ function($ionicTabsDelegate, $ionicConfig, $ionicHistory) {
|
||||
|
||||
function emitLifecycleEvent(ev, data) {
|
||||
ev.stopPropagation();
|
||||
var selectedTab = tabsCtrl.selectedTab();
|
||||
if (selectedTab) {
|
||||
selectedTab.$emit(ev.name.replace('NavView', 'View'), data);
|
||||
var previousSelectedTab = tabsCtrl.previousSelectedTab();
|
||||
if (previousSelectedTab) {
|
||||
previousSelectedTab.$broadcast(ev.name.replace('NavView', 'Tabs'), data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user