Skip to content

Commit 7fd31b6

Browse files
committed
fix(ionHeaderBar): have no side effects with content in other views
Closes #1095
1 parent b87bcb3 commit 7fd31b6

File tree

4 files changed

+17
-13
lines changed

4 files changed

+17
-13
lines changed

Diff for: js/angular/directive/headerFooterBar.js

+9-9
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ function tapScrollToTopDirective() {
8888
current.tagName.match(/input|textarea|select/i) ||
8989
current.isContentEditable) {
9090
return;
91-
}
91+
}
9292
current = current.parentNode;
9393
}
9494
var touch = e.gesture && e.gesture.touches[0] || e.detail.touches[0];
@@ -121,26 +121,26 @@ function headerFooterBarDirective(isHeader) {
121121
});
122122

123123
var el = $element[0];
124-
//just incase header is on rootscope
125-
var parentScope = $scope.$parent || $scope;
126124

127125
if (isHeader) {
128126
$scope.$watch(function() { return el.className; }, function(value) {
129127
var isSubheader = value.indexOf('bar-subheader') !== -1;
130-
parentScope.$hasHeader = !isSubheader;
131-
parentScope.$hasSubheader = isSubheader;
128+
$scope.$hasHeader = !isSubheader;
129+
$scope.$hasSubheader = isSubheader;
132130
});
133131
$scope.$on('$destroy', function() {
134-
parentScope.$hasHeader = parentScope.$hasSubheader = null;
132+
delete $scope.$hasHeader;
133+
delete $scope.$hasSubheader;
135134
});
136135
} else {
137136
$scope.$watch(function() { return el.className; }, function(value) {
138137
var isSubfooter = value.indexOf('bar-subfooter') !== -1;
139-
parentScope.$hasFooter = !isSubfooter;
140-
parentScope.$hasSubfooter = isSubfooter;
138+
$scope.$hasFooter = !isSubfooter;
139+
$scope.$hasSubfooter = isSubfooter;
141140
});
142141
$scope.$on('$destroy', function() {
143-
parentScope.$hasFooter = parentScope.$hasSubfooter = null;
142+
delete $scope.$hasFooter;
143+
delete $scope.$hasSubfooter;
144144
});
145145
$scope.$watch('$hasTabs', function(val) {
146146
$element.toggleClass('has-tabs', !!val);

Diff for: js/angular/directive/tabs.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ IonicModule
7575
$scope.$hasTabsTop = isTabsTop && !isHidden;
7676
});
7777
$scope.$on('$destroy', function() {
78-
$scope.$hasTabs = $scope.$hasTabsTop = null;
78+
delete $scope.$hasTabs;
79+
delete $scope.$hasTabsTop;
7980
});
8081
}
8182
}

Diff for: test/html/viewState.html

+3
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,9 @@ <h3>Information</h3>
172172
</button>
173173
</ion-nav-buttons>
174174
<ion-view title="Auto List">
175+
<ion-header-bar class="bar bar-subheader bar-energized">
176+
<h1 class="title">some subheader</h1>
177+
</ion-header-bar>
175178
<ion-content padding="true">
176179
<ion-list>
177180
<ion-item ng-repeat="auto in autos"

Diff for: test/unit/angular/directive/headerFooterBar.unit.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ describe('bar directives', function() {
9898
if (data.tag === 'ion-header-bar') {
9999
it('$hasHeader $hasSubheader', function() {
100100
var el = setup();
101-
var scope = el.scope().$parent;
101+
var scope = el.scope();
102102
expect(scope.$hasHeader).toEqual(true);
103103
expect(scope.$hasSubheader).toEqual(false);
104104
el.addClass('bar-subheader');
@@ -113,7 +113,7 @@ describe('bar directives', function() {
113113
} else {
114114
it('$hasFooter $hasSubheader', function() {
115115
var el = setup();
116-
var scope = el.scope().$parent;
116+
var scope = el.scope();
117117
expect(scope.$hasFooter).toEqual(true);
118118
expect(scope.$hasSubfooter).toEqual(false);
119119
el.addClass('bar-subfooter');
@@ -127,7 +127,7 @@ describe('bar directives', function() {
127127
});
128128
it('.has-tabs', function() {
129129
var el = setup();
130-
var scope = el.scope().$parent;
130+
var scope = el.scope();
131131
expect(el.hasClass('has-tabs')).toBe(false);
132132
scope.$apply('$hasTabs = true');
133133
expect(el.hasClass('has-tabs')).toBe(true);

0 commit comments

Comments
 (0)