mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
60 lines
1.7 KiB
JavaScript
60 lines
1.7 KiB
JavaScript
/**
|
|
* @ngdoc directive
|
|
* @name ionSideMenu
|
|
* @module ionic
|
|
* @restrict E
|
|
* @parent ionic.directive:ionSideMenus
|
|
*
|
|
* @description
|
|
* A container for a side menu, sibling to an {@link ionic.directive:ionSideMenuContent} directive.
|
|
*
|
|
* @usage
|
|
* ```html
|
|
* <ion-side-menu
|
|
* side="left"
|
|
* width="myWidthValue + 20"
|
|
* is-enabled="shouldLeftSideMenuBeEnabled()">
|
|
* </ion-side-menu>
|
|
* ```
|
|
* For a complete side menu example, see the
|
|
* {@link ionic.directive:ionSideMenus} documentation.
|
|
*
|
|
* @param {string} side Which side the side menu is currently on. Allowed values: 'left' or 'right'.
|
|
* @param {boolean=} is-enabled Whether this side menu is enabled.
|
|
* @param {number=} width How many pixels wide the side menu should be. Defaults to 275.
|
|
*/
|
|
IonicModule
|
|
.directive('ionSideMenu', function() {
|
|
return {
|
|
restrict: 'E',
|
|
require: '^ionSideMenus',
|
|
scope: true,
|
|
compile: function(element, attr) {
|
|
angular.isUndefined(attr.isEnabled) && attr.$set('isEnabled', 'true');
|
|
angular.isUndefined(attr.width) && attr.$set('width', '275');
|
|
|
|
element.addClass('menu menu-' + attr.side);
|
|
|
|
return function($scope, $element, $attr, sideMenuCtrl) {
|
|
$scope.side = $attr.side || 'left';
|
|
|
|
var sideMenu = sideMenuCtrl[$scope.side] = new ionic.views.SideMenu({
|
|
width: 275,
|
|
el: $element[0],
|
|
isEnabled: true
|
|
});
|
|
|
|
$scope.$watch($attr.width, function(val) {
|
|
var numberVal = +val;
|
|
if (numberVal && numberVal == val) {
|
|
sideMenu.setWidth(+val);
|
|
}
|
|
});
|
|
$scope.$watch($attr.isEnabled, function(val) {
|
|
sideMenu.setIsEnabled(!!val);
|
|
});
|
|
};
|
|
}
|
|
};
|
|
});
|