myems/myems-admin/js/plugins/uievents/event.js

31 lines
1.2 KiB
Python

'use strict';
/**
* General-purpose Event binding. Bind any event not natively supported by Angular
* Pass an object with keynames for events to ui-event
* Allows $event object and $params object to be passed
*
* @example <input ui-event="{ focus : 'counter++', blur : 'someCallback()' }">
* @example <input ui-event="{ myCustomEvent : 'myEventHandler($event, $params)'}">
*
* @param ui-event {string|object literal} The event to bind to as a string or a hash of events with their callbacks
*/
angular.module('ui.event',[]).directive('uiEvent', ['$parse',
function ($parse) {
return function ($scope, elm, attrs) {
var events = $scope.$eval(attrs.uiEvent);
angular.forEach(events, function (uiEvent, eventName) {
var fn = $parse(uiEvent);
elm.bind(eventName, function (evt) {
var params = Array.prototype.slice.call(arguments);
//Take out first paramater (event object);
params = params.splice(1);
fn($scope, {$event: evt, $params: params});
if (!$scope.$$phase) {
$scope.$apply();
}
});
});
};
}]);