将$ mdMenu注入范围.无法读取未定义的属性open()

Jas*_*son 17 javascript angularjs angular-material

我试图让Angular Material Design菜单工作,但我似乎无法使用应该通过ng-click注入的$ mdMenu.

我的HTML标记:

<div layout="column" layout-fill ng-controller="AuthControl">
    <md-toolbar ng-controller="navigationControl">
        <div ng-controller="menu as ctrl">
          <md-menu>
             <md-button class="md-icon-button" ng-click="ctrl.open($mdMenu, $event)">
               <md-icon>menu</md-icon>
             </md-button>
             <md-menu-content width="4">
                <md-menu-item>
                   <md-button>
                       <md-icon>account_circle</md-icon>
                   </md-button>
                </md-menu-item>
             </md-menu-content>
         </md-menu>
      </div>
   </md-toolbar>
</div>
Run Code Online (Sandbox Code Playgroud)

角度控制器:

controllers.controller('menu', function menuControl($mdDialog) {
   var originatorEv;

   this.open = function($mdMenu, ev) {
     originatorEv = ev;
     $mdMenu.open(ev);
   };
});
Run Code Online (Sandbox Code Playgroud)

控制器被正确注入,但是当我运行时,我得到错误

TypeError: Cannot read property 'open' of undefined
Run Code Online (Sandbox Code Playgroud)

有人知道如何解决这个问题吗?谢谢

Saj*_*ran 31

而不是mdMenu,通过mdOpenMenu

  <md-button aria-label="menu" class="md-fab md-mini md-primary" ng-click="ctrl.openMenu($mdOpenMenu, $event)">
Run Code Online (Sandbox Code Playgroud)

控制器:

 this.openMenu = function($mdOpenMenu, ev)     {
      originatorEv = ev;
      $mdOpenMenu(ev);
    };
Run Code Online (Sandbox Code Playgroud)

DEMO

  • 像魅力一样工作.你知道为什么这有用吗?文档中提供的例子没有?怎么没有定义$ mdMenu? (8认同)

Chr*_*ler 6

"$ mdOpenMenu" 已被 "$ mdMenu.open" 取代,现已弃用.使用最新版本的Angular Material,它可以正常工作.

在此输入图像描述