【问题标题】:How can I open an Angular Material menu from a controller function?如何从控制器功能打开 Angular Material 菜单?
【发布时间】:2016-11-22 14:31:51
【问题描述】:

我正在检查用户状态,并希望相应地启用和禁用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 指令进行调用,菜单会按预期打开。感谢您的帮助。

【问题讨论】:

  • 你能提供一个小提琴/plunker吗?

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


【解决方案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);
        // -----------^
    }
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多