如何从控制器功能打开Angular Material菜单?

时间:2016-07-19 15:34:06

标签: angularjs angularjs-scope angular-services angular-controller

我正在检查用户状态,并希望相应地启用和禁用menu

在标记中:

<a ... ng-click="ctrl.userMenu($event)"></a>

在控制器中:

ctrl.userMenu = function (e) {
    if (ctrl.user.has.something) {
        e.preventDefault();
        return false;
    } else {
        ctrl.openMenu($mdOpenMenu, e);
    }
};

但是,如果else的情况属实,则不会触发菜单。我怀疑范围问题。我也尝试在匿名函数中包装菜单服务调用。如果直接从ng-click指令进行调用,则菜单将按预期打开。感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

原来我忘记了将菜单服务与ng-click指令一起传递:

<a ... ng-click="ctrl.userMenu($mdOpenMenu, $event)"></a>
// ---------------------------------^

ctrl.userMenu = function (m, e) {
// -----------------------^
    if (ctrl.user.has.something) {
        e.preventDefault();
        return false;
    } else {
        ctrl.openMenu(m, e);
        // -----------^
    }
};