Я пытаюсь прослушать событие $mdMenuOpen
в моей директиве.
.directive('mdPreventFocus', function () {
return {
restrict: 'A',
link: function (scope, element, attrs, $mdOpenMenu) {
element.on('click', function () {
console.log(scope);
scope.$on('$mdMenuOpen', function(ev, element) {
console.log('open');
});
})
}
}
})
<md-menu md-position-mode="target-right target" md-offset="0 42">
<md-button class="md-icon-button rounded dtp-btn-ok" ng-click="$mdMenu.open($event);" md-prevent-focus>
<i class="material-icons">more_horiz</i>
</md-button>
<md-menu-content class="person-popup contact-popup">
<md-card md-theme-watch>
<md-card-title>
<md-card-title-text>
<span class="md-headline">Headline</span>
<span class="md-subhead">Subhead informatie</span>
</md-card-title-text>
</md-card-title>
<md-card-actions layout="row" layout-align="end center">
<md-button title="Title informatie" class="md-icon-button icon-margin">
<i class="material-icons">phone</i>
</md-button>
<md-button title="Title informatie" class="md-icon-button icon-margin">
<i class="material-icons">email</i>
</md-button>
<md-button title="Title informatie" class="md-icon-button icon-margin">
<i class="material-icons" >forward</i>
</md-button>
</md-card-actions>
</md-card>
</md-menu-content>
</md-menu>
Когда я нажимаю кнопку md, я вижу вывод console.log(scope)
, но scope.$on
ничего не делает.
Если я проверяю scope
в консоли, я вижу $mdOpenMenu: ƒ
Также я могу зарегистрировать scope.$id
, который возвращает значение, но если я зарегистрирую scope.$mdMenuIsOpen
, я получу неопределенное значение. Что означает, что mdMenu не открыто, иначе это будет правдой. Но в моем пользовательском интерфейсе меню открыто.
Есть идеи, почему мой scope.$on
не работает?
// РЕДАКТИРОВАТЬ //
Кажется, что только при первом открытии меню scope.on('$mdMenuOpen')
не работает. Если я снова открою меню, я увижу сообщение console.log.
// РЕДАКТИРОВАТЬ 2 //
Я скопировал свой код на Codepen https://codepen.io/anon/pen/LmQNzv, и там он, кажется, работает как задумано. Итак, я собираюсь посмотреть, в чем проблема в моем коде.