2

我正在检查用户状态,并希望相应地启用和禁用menu如何从控制器功能打开角度材料菜单?

在标记:

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

和Controller:

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

但是,这不会触发菜单,如果其他情况下也是如此。我怀疑是范围问题。我也尝试用匿名函数包装菜单服务调用。如果通过ng-click指令直接拨打电话,菜单将按预期打开。感谢您的帮助。

+0

你可以提供一个小提琴/ plunker? – Deep

回答

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); 
     // -----------^ 
    } 
};