首页 > 解决方案 > scope.$on $mdMenuOpen 不起作用

问题描述

我正在尝试$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 未打开,否则为 true。但在我的 UI 中,菜单是打开的。

任何想法为什么我scope.$on的不工作?

// 编辑 //

似乎只有我第一次打开菜单时scope.on('$mdMenuOpen')不起作用。如果我再次打开菜单,我会看到 console.log 消息。

// 编辑 2 //

我在 Codepen https://codepen.io/anon/pen/LmQNzv上复制了我的代码,它似乎确实按预期工作。所以我要看看我的代码中的问题是什么。

标签: angularjs

解决方案


推荐阅读