There are situations where you might want to add additional methods toangular.module
. This is easy to accomplish, and can be a handy technique.
//For directive template <hello></hello> //For directive controller <li menu-item ng-repeat="category in categories" class="menu-animation" ng-class="{'highlight':mouse_over}" ng-mouseenter="mouse_over = true" ng-mouseleave="mouse_over = false" ng-class="{'active':isCurrentCategory(category)}"> <a ng-click="setCurrentCategory(category)"> {{category.name}} </a> </li>
var original = angular.module; angular.module = function(name, deps, config){ var module = original(name, deps, config); module.quickTemplate = function(name, template){ module.directive(name, function() { return { template: template } }); }; module.quickController = function(name, controller) { module.directive(name, function() { return { controller: controller } }) }; return module; };
Use: We comment out the meunItem directive, instead using quickController method added to the end of the file.
angular.module('categories', [ 'eggly.models.categories', 'ngAnimate' ]) .config(function ($stateProvider) { $stateProvider .state('eggly.categories', { url: '/', views: { 'categories@': { controller: 'CategoriesController', templateUrl: 'app/categories/categories.tmpl.html' }, 'bookmarks@': { controller: 'BookmarksController', templateUrl: 'app/categories/bookmarks/bookmarks.tmpl.html' } } }); }) .controller('CategoriesController', function ($scope) { }) /* .directive('menuItem', function(){ var controller = function($scope){ $scope.mouse_over = false; }; return { controller: controller } })*/ .animation('.menu-animation', function () { return { beforeAddClass: function (element, className, done) { if (className == 'highlight') { TweenLite.to(element, 0.2, { '223', borderLeft: '10px solid #89CD25', onComplete: done }); TweenLite.to(element.find('a'), 0.2, { color: "#89CD25" }); } else { done(); } }, beforeRemoveClass: function (element, className, done) { if (className == 'highlight') { TweenLite.to(element, 0.4, { '180', borderLeft: '5px solid #333', onComplete: done }); TweenLite.to(element.find('a'), 0.4, { color: "#5bc0de" }); } else { done(); } } }; }) .quickController('menuItem', function($scope){ $scope.mouse_over = false; }) ;
Have to add quickController to the end of the file, otherwise, it breaks the chain.