mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
sideMenu directives cleanup
This commit is contained in:
14
dist/js/ionic-angular.js
vendored
14
dist/js/ionic-angular.js
vendored
@@ -25781,10 +25781,11 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
|
||||
|
||||
var defaultPrevented = false;
|
||||
|
||||
ionic.on('mousedown', function(e) {
|
||||
var readDefaultPrevented = function(e) {
|
||||
// If the child element prevented the drag, don't drag
|
||||
defaultPrevented = e.defaultPrevented;
|
||||
});
|
||||
}
|
||||
ionic.on('mousedown', readDefaultPrevented);
|
||||
|
||||
var dragFn = function(e) {
|
||||
if(defaultPrevented) {
|
||||
@@ -25830,6 +25831,7 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
|
||||
$scope.$on('$destroy', function() {
|
||||
Gesture.off(dragGesture, 'drag', dragFn);
|
||||
Gesture.off(releaseGesture, 'release', dragReleaseFn);
|
||||
ionic.off('mousedown', readDefaultPrevented);
|
||||
});
|
||||
};
|
||||
}
|
||||
@@ -25868,6 +25870,14 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
|
||||
}
|
||||
|
||||
$element.append(transclude($scope));
|
||||
|
||||
$scope.$on('$destroy', function () {
|
||||
if (['left', 'right'].indexOf($scope.side) > -1) {
|
||||
delete sideMenuCtrl[$scope.side].isEnabled;
|
||||
delete sideMenuCtrl[$scope.side].pushDown;
|
||||
delete sideMenuCtrl[$scope.side].bringUp;
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
14
js/ext/angular/src/directive/ionicSideMenu.js
vendored
14
js/ext/angular/src/directive/ionicSideMenu.js
vendored
@@ -58,10 +58,11 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
|
||||
|
||||
var defaultPrevented = false;
|
||||
|
||||
ionic.on('mousedown', function(e) {
|
||||
var readDefaultPrevented = function(e) {
|
||||
// If the child element prevented the drag, don't drag
|
||||
defaultPrevented = e.defaultPrevented;
|
||||
});
|
||||
}
|
||||
ionic.on('mousedown', readDefaultPrevented);
|
||||
|
||||
var dragFn = function(e) {
|
||||
if(defaultPrevented) {
|
||||
@@ -107,6 +108,7 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
|
||||
$scope.$on('$destroy', function() {
|
||||
Gesture.off(dragGesture, 'drag', dragFn);
|
||||
Gesture.off(releaseGesture, 'release', dragReleaseFn);
|
||||
ionic.off('mousedown', readDefaultPrevented);
|
||||
});
|
||||
};
|
||||
}
|
||||
@@ -145,6 +147,14 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
|
||||
}
|
||||
|
||||
$element.append(transclude($scope));
|
||||
|
||||
$scope.$on('$destroy', function () {
|
||||
if (['left', 'right'].indexOf($scope.side) > -1) {
|
||||
delete sideMenuCtrl[$scope.side].isEnabled;
|
||||
delete sideMenuCtrl[$scope.side].pushDown;
|
||||
delete sideMenuCtrl[$scope.side].bringUp;
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
@@ -16,3 +16,74 @@ describe('Ionic Angular Side Menu', function() {
|
||||
expect(scope.sideMenuController).not.toBe(undefined);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Ionic Side Menu Content Directive', function () {
|
||||
var $compile, element, scope, sideMenusCtrl;
|
||||
|
||||
beforeEach(module('ionic.ui.sideMenu'));
|
||||
|
||||
beforeEach(inject(function (_$compile_, _$rootScope_) {
|
||||
$compile = _$compile_;
|
||||
scope = _$rootScope_;
|
||||
|
||||
var sideMenus = $compile('<side-menus>')(scope).appendTo('body');
|
||||
|
||||
sideMenuCtrl = sideMenus.controller('sideMenus');
|
||||
spyOn(sideMenuCtrl, '_handleDrag');
|
||||
|
||||
element = angular.element('<div side-menu-content>').appendTo(sideMenus);
|
||||
|
||||
$compile(element)(scope);
|
||||
scope.$digest();
|
||||
}));
|
||||
|
||||
it('Should handle drag', function () {
|
||||
ionic.trigger('drag', {target: element[0]});
|
||||
|
||||
expect(sideMenuCtrl._handleDrag).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('Should not handle drag when prevented', function () {
|
||||
var event = new CustomEvent('mousedown', {bubbles: true, cancelable: true});
|
||||
event.preventDefault();
|
||||
element[0].dispatchEvent(event);
|
||||
|
||||
ionic.trigger('drag', {target: element[0]});
|
||||
|
||||
expect(sideMenuCtrl._handleDrag).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Ionic Side Menu Directive', function () {
|
||||
var element, scope, sideMenuCtrl;
|
||||
|
||||
beforeEach(module('ionic.ui.sideMenu'));
|
||||
|
||||
beforeEach(inject(function (_$compile_, _$rootScope_) {
|
||||
var $compile = _$compile_;
|
||||
var $rootScope = _$rootScope_;
|
||||
|
||||
var sideMenus = $compile('<side-menus>')($rootScope);
|
||||
|
||||
sideMenuCtrl = sideMenus.controller('sideMenus');
|
||||
|
||||
element = angular.element('<side-menu side="left">').appendTo(sideMenus);
|
||||
$compile(element)($rootScope);
|
||||
|
||||
scope = element.scope();
|
||||
scope.$digest();
|
||||
}));
|
||||
|
||||
it('Should set attributes on the controller', function () {
|
||||
expect(sideMenuCtrl.left.isEnabled).not.toBe(undefined);
|
||||
expect(sideMenuCtrl.left.pushDown).not.toBe(undefined);
|
||||
expect(sideMenuCtrl.left.bringUp).not.toBe(undefined);
|
||||
});
|
||||
|
||||
it('Should remove the attributes it sets on the controller', function () {
|
||||
scope.$destroy();
|
||||
expect(sideMenuCtrl.left.isEnabled).toBe(undefined);
|
||||
expect(sideMenuCtrl.left.pushDown).toBe(undefined);
|
||||
expect(sideMenuCtrl.left.bringUp).toBe(undefined);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user