diff --git a/js/angular/directive/itemReorderButton.js b/js/angular/directive/itemReorderButton.js
index f4494915c3..6611389912 100644
--- a/js/angular/directive/itemReorderButton.js
+++ b/js/angular/directive/itemReorderButton.js
@@ -67,6 +67,11 @@ IonicModule
});
};
+ // prevent clicks from bubbling up to the item
+ if(!$attr['ngClick'] && !$attr['onClick'] && !$attr['onclick']){
+ $element[0].onclick = function(e){e.stopPropagation(); return false;};
+ }
+
var container = jqLite(ITEM_TPL_REORDER_BUTTON);
container.append($element);
itemCtrl.$element.append(container).addClass('item-right-editable');
diff --git a/test/unit/angular/directive/item.unit.js b/test/unit/angular/directive/item.unit.js
index 0b4d1b8834..7179f1f829 100644
--- a/test/unit/angular/directive/item.unit.js
+++ b/test/unit/angular/directive/item.unit.js
@@ -114,6 +114,23 @@ describe('ionReorderButton directive', function() {
expect(reorderContainer.hasClass('visible')).toBe(true);
expect(reorderContainer.hasClass('active')).toBe(true);
}));
+ it('should allow click handlers, but not bubble up to item\'s click event', inject(function($compile, $rootScope) {
+ $rootScope.click = jasmine.createSpy('click');;
+
+ var el = angular.element('');
+ $compile(el)($rootScope);
+ $rootScope.$apply();
+ var reorderContainer = angular.element(el[0].querySelector('ion-reorder-button'));
+ reorderContainer.triggerHandler('click');
+ expect($rootScope.click).not.toHaveBeenCalled();
+
+ var el = angular.element('');
+ $compile(el)($rootScope);
+ $rootScope.$apply();
+ var reorderContainer = angular.element(el[0].querySelector('ion-reorder-button'));
+ reorderContainer.triggerHandler('click');
+ expect($rootScope.click).toHaveBeenCalled();
+ }));
});
describe('ionOptionButton directive', function() {