范围。$ on $ mdMenuOpen不起作用

时间:2018-05-11 08:58:16

标签: angularjs

我试图在我的指令中听取$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上复制了我的代码,它似乎确实按预期工作。所以我要看看代码中的问题是什么。

0 个答案:

没有答案