DragonKnight
DragonKnight

Reputation: 1880

`ng-click="$mdMenu.open($event)"` not working in angular material

I am adding a material component in my angular app but is click is not functioning.

ref url: https://material.angularjs.org/latest/demo/menu

bug:

In "Position Mode Demos" section, ng-click="$mdMenu.open($event)" is not working. I don't see in documentation that I have to add something like $mdMenu as dependency. Similar components not working too.

<div layout="column" flex-xs="100" flex-sm="100" flex="33" layout-align="center center">

        <p><code>md-position-mode="target-right target"</code></p>
        <md-menu md-position-mode="target-right target" >
          <md-button aria-label="Open demo menu" class="md-icon-button" ng-click="$mdMenu.open($event)">
            <md-icon md-menu-origin md-svg-icon="call:portable-wifi-off"></md-icon>
          </md-button>
          <md-menu-content width="4" >
            <md-menu-item ng-repeat="item in [1, 2, 3]">
              <md-button ng-click="ctrl.announceClick($index)">
                  <div layout="row" flex>
                    <p flex>Option {{item}}</p>
                    <md-icon md-menu-align-target md-svg-icon="call:portable-wifi-off" style="margin: auto 3px auto 0;"></md-icon>
                  </div>
              </md-button>
            </md-menu-item>
          </md-menu-content>
        </md-menu>

</div>

Upvotes: 1

Views: 2038

Answers (1)

shaunhusain
shaunhusain

Reputation: 19748

https://codepen.io/anon/pen/xPpGeW

Make sure you have the correct version of angular material library loaded for the documents you're reading things change in the material library pretty often.

<html lang="en" >
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!-- Angular Material style sheet -->
  <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/angular_material/1.1.4/angular-material.css">
</head>
<body ng-app="BlankApp" ng-cloak>
  <!--
    Your HTML content here
  -->  
  
  <!-- Angular Material requires Angular.js Libraries -->
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-animate.min.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-aria.min.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-messages.min.js"></script>

  <!-- Angular Material Library -->
  <script src="https://ajax.googleapis.com/ajax/libs/angular_material/1.1.4/angular-material.min.js"></script>
  
  <!-- Your application bootstrap  -->
  <script type="text/javascript">    
    /**
     * You must include the dependency on 'ngMaterial' 
     */
    angular.module('BlankApp', ['ngMaterial']);
  </script>
  
  <md-menu>
   <!-- Trigger element is a md-button with an icon -->
   <md-button ng-click="$mdMenu.open($event)" class="md-icon-button" aria-label="Open sample menu">
    Menu
     <md-icon md-font-icon="icon-settings"></md-icon>
   </md-button>
   <md-menu-content>
     <md-menu-item><md-button ng-click="doSomething()">Do Something</md-button></md-menu-item>
   </md-menu-content>
  </md-menu>
</body>
</html>

<!--
Copyright 2016 Google Inc. All Rights Reserved. 
Use of this source code is governed by an MIT-style license that can be in foundin the LICENSE file at https://material.angularjs.org/license.
-->

Upvotes: 1

Related Questions