Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
detect when ngEventDirectives are bound to undefined functions
branch: master

fix(events): hook directives instead of replacing implementation

Before this change hint-events simply replaced the directive's implementation with its own and completely ignored the original implementation. This was pretty bad since we really shouldn't assume anything about the method we are hooking (for example, some directives do scope.$evalAsync now, which hint-event's implementation didn't do). In addition there was a bug in hint-event's implementation of the directive which totally broke elements with more than one event directive (the listener was always added to the first event, no matter which directive it was linking)
latest commit dc5076bbab
Shahar Talmi shahata authored

Angular Hint Events Build Status Code Climate

This hinting module is part of the overall tool AngularHint that aims to help you spend less time finding silent errors in your code and more time programming. Loading this module will provide warnings specific to AngularJS event directives.

See the AngularHintEvents NPM Module.


Install the AngularHint NPM module and use ng-hint or ng-hint-include='events' to enable AngularHintEvents. Further installation information is available on the main AngularHint repository.


Identifying Undefined Variables

AngularHintEvents checks all ngEventDirectives ngClick, ngMousedown, ngFocus, etc. and their attributes for defined functions and variables on the appropriate $scope. If a function or variable is found to be undefined, AngularHintEvents will notify you and suggest the closest match if one exists. In the first example below, you would be warned that the function increments doesn't exist for its scope and that you should try increment.

More complicated expressions will also be checked for values found to be undefined. The second example would cause a warning saying that divideVal and divide are not defined.

Example HTML Implementation
<a ng-click="increments">Count!</a>
<a ng-click="divideVal = dividend() / divide()">Count!</a>
Example Controller Implementation:
angular.module('demoApp').controller('DemoController', ['$scope', function($scope) {
  $scope.count = 0;
  $scope.increment = function() {
  $scope.dividend = function() {
    return Math.random()*20+20
  $scope.divisor = function() {
    return Math.random()*10+1


Want to improve AngularHintEvents or other facets of AngularHint? We'd love to get your help! See the Contributing Guidelines.


Copyright 2014 Google, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Something went wrong with that request. Please try again.