메뉴 항목이있는 지시문을 만들었습니다. 일부 메뉴 항목에는 하위 메뉴 항목이 있습니다. 메뉴 항목을 클릭하면 하위 메뉴가 열리도록 지시문이 만들어집니다. 내 문제는 하나의 메뉴 항목을 클릭하면 하위 메뉴가 열리고 다른 메뉴 항목을 클릭하면 열리 며 하위 메뉴가 두 개 열려 있다는 것입니다.
메뉴 항목을 클릭하고 클릭 한 메뉴 항목 하위 메뉴를 열 때 다른 모든 하위 메뉴를 닫으려고합니다. 어떻게해야합니까?ng-show가있는 AngularJS 하위 메뉴
내 HTML 코드 :
<menu visible="leftVisible" alignment="left">
<menu-item hash="first" show="menu1">
Side Menu item
<ul ng-show="menu1">
<li>
<a>First submenu item</a>
</li>
<li>
<a>First submenu item</a>
</li>
</ul>
</menu-item>
<menu-item hash="second" show="menu2">
Side Menu item
<ul ng-show="menu2">
<li>
<a >Second submenu item</a>
</li>
<li>
<a >Second submenu item</a>
</li>
</ul>
</menu-item>
<menu-item hash="third">Side Menu item</menu-item>
그리고 이것은 내 지시어 코드 :
menuItem.directive("menuItem", function() {
return {
restrict: "E",
template: "<div ng-click='toggle($event)' ng-transclude></div>",
transclude: true,
scope: {
hash: "@",
show: '=',
},
link: function($scope) {
$scope.toggle = function(e) {
$scope.show = !$scope.show;
}
}
}
});
그래서 메뉴 항목을 클릭 할 때 내가 다른 하위 메뉴를 닫으려면 무엇을해야하는지?
app.directive('menu', function() {
return {
restrict: "E",
template: "<div ng-class='{ show: visible, left: alignment === \"left\", right: alignment === \"right\" }' ng-transclude></div>",
transclude: true,
scope: {
visible: "=",
alignment: "@"
}
};
});
app.directive("menuItem", function() {
return {
restrict: "E",
template: "<div ng-click='toggle()' ng-transclude></div>",
transclude: true,
scope: {
hash: "@"
},
link: function($scope, elm) {
$scope.toggle = function(e) {
$scope.$parent.activeItem = $scope.hash;
}
}
}
});
것은 다음 사용할 수 있습니다 : 당신이 당신의 메뉴 지시어 내부의 사람들이 menuItem을 포장하고 있기 때문에
어떻게 메뉴 지시어가 보이나요? plunker는 당신에게 유효한 생각을 제안 할 수있을 것입니다. – elvin
@elvin 플 런커를 만들었습니다 -> https://plnkr.co/edit/lBWXqDMwFdNlHV59eM8e?p=preview –