refactor(ionNavBackButton): make click handler use $ionicNgClick service

Closes #802
This commit is contained in:
Andy Joslin
2014-03-15 09:24:24 -06:00
parent 90f360c827
commit 0ffb748fc7
2 changed files with 14 additions and 13 deletions

View File

@@ -282,7 +282,7 @@ function($ionicViewService, $rootScope, $animate, $compile, $parse) {
* </ion-nav-bar>
* ```
*/
.directive('ionNavBackButton', [function() {
.directive('ionNavBackButton', ['$ionicNgClick', function($ionicNgClick) {
return {
restrict: 'E',
require: '^ionNavBar',
@@ -292,8 +292,9 @@ function($ionicViewService, $rootScope, $animate, $compile, $parse) {
'<button class="button back-button" ng-transclude>' +
'</button>',
link: function($scope, $element, $attr, navBarCtrl) {
$scope.$navBack = navBarCtrl.back;
if (!$attr.ngClick) {
ionic.on('tap', navBarCtrl.back, $element[0]);
$ionicNgClick($scope, $element, '$navBack($event)');
}
//If the current viewstate does not allow a back button,

View File

@@ -1,5 +1,5 @@
describe('ionNavBackButton directive', function() {
beforeEach(module('ionic.ui.navBar'));
beforeEach(module('ionic'));
function setup(attr, content) {
var el;
@@ -53,19 +53,19 @@ describe('ionNavBackButton directive', function() {
expect(el.children().eq(0)[0].tagName.toLowerCase()).toBe('b');
});
it('should add onTap if ngClick isnt defined', function() {
spyOn(ionic, 'on');
it('should $navBack on click by default', function() {
var el = setup();
expect(ionic.on).toHaveBeenCalledWith(
'tap',
el.controller('ionNavBar').back,
el[0]
);
el.scope().$navBack = jasmine.createSpy('$navBack');
el.triggerHandler('click');
expect(el.scope().$navBack).toHaveBeenCalled();
});
it('should not add onTap if ngClick is defined', function() {
spyOn(ionic, 'on');
it('should do ngClick expression if defined', function() {
var el = setup('ng-click="doSomething()"');
expect(ionic.on).not.toHaveBeenCalled();
el.scope().$navBack = jasmine.createSpy('$navBack');
el.scope().doSomething = jasmine.createSpy('doSomething');
el.triggerHandler('click');
expect(el.scope().$navBack).not.toHaveBeenCalled();
expect(el.scope().doSomething).toHaveBeenCalled();
});
});