Я пытаюсь создать директиву для ящиков, которые могут быть использованы в моем приложении. Что я хочу сделать, так это: когда пользователь открывает один ящик, мне нужны другие открытые ящики для закрытия.Возможно ли получить доступ к экземплярам директивы внутри определения директивы?
Это мой текущий код:
Markup
<a href="javascript:;" id="my_switch">
Click me to toggle the drawer!
</a>
<drawer data-switch="#my_switch">
Content of the first drawer
</drawer>
<a href="javascript:;" id="my_other_switch">
Click me to toggle the other drawer!
</a>
<drawer>
Content of the second drawer
</drawer>
Drawer.html
<div class="drawer_container">
<div class="drawer" ng-transclude>
</div>
</div>
Директива
MyApp.directive('drawer', function(DrawerService){
return {
restrict: 'AE',
replace: true,
transclude: true,
templateUrl: 'drawer.html',
link: function(scope, element, attributes){
var drawer_switch = $(attributes.switch);
var drawer = $(element).find('.drawer');
var toggle = function(event){
drawer.toggle();
};
drawer_switch.bind('click', toggle);
}
};
});
Возможно ли открыть один ящик, чтобы остальные ящики закрылись, используя только директиву?
Как я могу получить конкретный экземпляр ящика и подачи его на службу тогда? Могу ли я добавить методы open() и close() в экземпляр ящика, чтобы они могли быть закрыты из службы? – Loupax