31 lines
1.2 KiB
Python
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();
|
|
}
|
|
});
|
|
});
|
|
};
|
|
}]);
|