是否有 isOpen 属性 of <md-menu> 指令?

Is there an isOpen property of <md-menu> directive?

angular-material 中的 <md-menu> 指令是否有一个 isOpen 属性(或类似的)可以收听或绑定?


注意:我最初的问题很长而且过于复杂,但 @Sarhanis 让我意识到我问错了问题。

您的示例存在较大的应用程序设计问题。

您应该避免在 Angular 项目中使用 jQuery。通过直接在 DOM 上工作,jQuery 扰乱了 Angular 的设计运行方式。

如果想给HTML元素添加classes之类的东西,可以结合使用普通的class属性和ngClass。这是 ngClass 上的一些 doco:https://docs.angularjs.org/api/ng/directive/ngClass

应该使用 ngShow 或 ngIf 来显示和隐藏元素: https://docs.angularjs.org/api/ng/directive/ngShow https://docs.angularjs.org/api/ng/directive/ngIf

它们应该处理您在控制器中定义的范围变量。

感谢 @Sarhanis,我能够找到如何将操作绑定到菜单打开和关闭事件。在打开和关闭菜单上,Angular Material 广播 $mdMenuOpen,分别 $mdMenuClose 事件:

$scope.$on('$mdMenuOpen', function(event, menu) { 
    console.log('opening menu...', event, menu); 

});
$scope.$on('$mdMenuClose', function(event, menu) { 
    console.log('closing menu...', event, menu); 

});

我遇到了同样的情况,当我尝试你的回答时,我发现 <md-menu>$scope 里面有一个 $mdMenuIsOpen 所以使用它不需要你绑定到一个事件。