diff --git a/dist/js/ionic-angular.js b/dist/js/ionic-angular.js
index 3c109feac1..005c6e669e 100644
--- a/dist/js/ionic-angular.js
+++ b/dist/js/ionic-angular.js
@@ -2615,15 +2615,12 @@ angular.module('ionic.ui.viewState', ['ionic.service.view', 'ionic.service.gestu
return function link($scope, $element, $attr) {
// Should we hide a back button when this tab is shown
$scope.hideBackButton = $scope.$eval($scope.hideBackButton);
+ if($scope.hideBackButton) {
+ $rootScope.$broadcast('viewState.showBackButton', false);
+ }
$scope.hideNavBar = $scope.$eval($scope.hideNavBar);
- if($scope.hideBackButton === true) {
- $scope.$emit('viewState.hideBackButton');
- } else {
- $scope.$emit('viewState.showBackButton');
- }
-
// watch for changes in the left buttons
$scope.$watch('leftButtons', function(value) {
$scope.$emit('viewState.leftButtonsChanged', $scope.leftButtons);
@@ -2653,14 +2650,22 @@ angular.module('ionic.ui.viewState', ['ionic.service.view', 'ionic.service.gestu
tElement.addClass('hide');
return function link($scope, $element) {
- $element.bind('click', goBack);
+ $element.bind('tap', goBack);
- $rootScope.$on('$viewHistory.historyChange', function(e, data) {
- if(data.showBack) {
+ $scope.showButton = function(val) {
+ if(val) {
$element[0].classList.remove('hide');
} else {
$element[0].classList.add('hide');
}
+ };
+
+ $rootScope.$on('$viewHistory.historyChange', function(e, data) {
+ $scope.showButton(data.showBack);
+ });
+
+ $rootScope.$on('viewState.showBackButton', function(e, data) {
+ $scope.showButton(data);
});
};
diff --git a/js/ext/angular/src/directive/ionicViewState.js b/js/ext/angular/src/directive/ionicViewState.js
index 15bca454b0..a5551323f4 100644
--- a/js/ext/angular/src/directive/ionicViewState.js
+++ b/js/ext/angular/src/directive/ionicViewState.js
@@ -174,15 +174,12 @@ angular.module('ionic.ui.viewState', ['ionic.service.view', 'ionic.service.gestu
return function link($scope, $element, $attr) {
// Should we hide a back button when this tab is shown
$scope.hideBackButton = $scope.$eval($scope.hideBackButton);
+ if($scope.hideBackButton) {
+ $rootScope.$broadcast('viewState.showBackButton', false);
+ }
$scope.hideNavBar = $scope.$eval($scope.hideNavBar);
- if($scope.hideBackButton === true) {
- $scope.$emit('viewState.hideBackButton');
- } else {
- $scope.$emit('viewState.showBackButton');
- }
-
// watch for changes in the left buttons
$scope.$watch('leftButtons', function(value) {
$scope.$emit('viewState.leftButtonsChanged', $scope.leftButtons);
@@ -212,14 +209,22 @@ angular.module('ionic.ui.viewState', ['ionic.service.view', 'ionic.service.gestu
tElement.addClass('hide');
return function link($scope, $element) {
- $element.bind('click', goBack);
+ $element.bind('tap', goBack);
- $rootScope.$on('$viewHistory.historyChange', function(e, data) {
- if(data.showBack) {
+ $scope.showButton = function(val) {
+ if(val) {
$element[0].classList.remove('hide');
} else {
$element[0].classList.add('hide');
}
+ };
+
+ $rootScope.$on('$viewHistory.historyChange', function(e, data) {
+ $scope.showButton(data.showBack);
+ });
+
+ $rootScope.$on('viewState.showBackButton', function(e, data) {
+ $scope.showButton(data);
});
};
diff --git a/js/ext/angular/test/directive/ionicView.unit.js b/js/ext/angular/test/directive/ionicView.unit.js
new file mode 100644
index 0000000000..702b3ce47a
--- /dev/null
+++ b/js/ext/angular/test/directive/ionicView.unit.js
@@ -0,0 +1,48 @@
+'use strict';
+
+describe('Ionic View', function() {
+ var compile, scope, listElement, listCtrl;
+
+ beforeEach(module('ionic.ui.viewState'));
+
+ beforeEach(inject(function($compile, $rootScope, $controller) {
+ compile = $compile;
+ scope = $rootScope;
+ }));
+
+ it('should init a view', function() {
+ var element = compile('me view')(scope);
+ expect(element.html()).toEqual('me view');
+ });
+
+ it('should add pane classname and remove title from view', function() {
+ var element = compile('')(scope);
+ expect(element.attr('title')).toBeUndefined();
+ expect(element.hasClass('pane')).toEqual(true);
+ });
+
+ it('should set hide back button', function() {
+ spyOn(scope, '$broadcast');
+
+ var element = compile('')(scope);
+ var viewScope = element.isolateScope();
+ expect(viewScope.hideBackButton).toBeUndefined();
+ expect(scope.$broadcast).not.toHaveBeenCalledWith('viewState.showBackButton', false);
+
+ element = compile('')(scope);
+ viewScope = element.isolateScope();
+ expect(viewScope.hideBackButton).toEqual(true);
+ expect(scope.$broadcast).toHaveBeenCalledWith('viewState.showBackButton', false);
+ });
+
+ it('should show/hide viewBack', function() {
+ var element = compile('')(scope);
+ expect(element.hasClass('hide')).toEqual(true);
+ scope.$broadcast('viewState.showBackButton', true);
+ expect(element.hasClass('hide')).toEqual(false);
+ scope.$broadcast('$viewHistory.historyChange', { showBack: false });
+ expect(element.hasClass('hide')).toEqual(true);
+ });
+
+});
+
diff --git a/js/ext/angular/test/viewState.html b/js/ext/angular/test/viewState.html
index a1c2b06a0e..5cfcfd261a 100644
--- a/js/ext/angular/test/viewState.html
+++ b/js/ext/angular/test/viewState.html
@@ -80,8 +80,9 @@