mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-28 20:10:29 +00:00
296 lines
7.6 KiB
JavaScript
296 lines
7.6 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* @ngdoc directive
|
|
* @name ng.directive:ngClick
|
|
*
|
|
* @description
|
|
* The ngClick directive allows you to specify custom behavior when
|
|
* an element is clicked.
|
|
*
|
|
* @element ANY
|
|
* @param {expression} ngClick {@link guide/expression Expression} to evaluate upon
|
|
* click. (Event object is available as `$event`)
|
|
*
|
|
* @example
|
|
<doc:example>
|
|
<doc:source>
|
|
<button ng-click="count = count + 1" ng-init="count=0">
|
|
Increment
|
|
</button>
|
|
count: {{count}}
|
|
</doc:source>
|
|
<doc:scenario>
|
|
it('should check ng-click', function() {
|
|
expect(binding('count')).toBe('0');
|
|
element('.doc-example-live :button').click();
|
|
expect(binding('count')).toBe('1');
|
|
});
|
|
</doc:scenario>
|
|
</doc:example>
|
|
*/
|
|
/*
|
|
* A directive that allows creation of custom onclick handlers that are defined as angular
|
|
* expressions and are compiled and executed within the current scope.
|
|
*
|
|
* Events that are handled via these handler are always configured not to propagate further.
|
|
*/
|
|
var ngEventDirectives = {};
|
|
forEach(
|
|
'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur'.split(' '),
|
|
function(name) {
|
|
var directiveName = directiveNormalize('ng-' + name);
|
|
ngEventDirectives[directiveName] = ['$parse', function($parse) {
|
|
return function(scope, element, attr) {
|
|
var fn = $parse(attr[directiveName]);
|
|
element.on(lowercase(name), function(event) {
|
|
scope.$apply(function() {
|
|
fn(scope, {$event:event});
|
|
});
|
|
});
|
|
};
|
|
}];
|
|
}
|
|
);
|
|
|
|
/**
|
|
* @ngdoc directive
|
|
* @name ng.directive:ngDblclick
|
|
*
|
|
* @description
|
|
* The `ngDblclick` directive allows you to specify custom behavior on dblclick event.
|
|
*
|
|
* @element ANY
|
|
* @param {expression} ngDblclick {@link guide/expression Expression} to evaluate upon
|
|
* dblclick. (Event object is available as `$event`)
|
|
*
|
|
* @example
|
|
* See {@link ng.directive:ngClick ngClick}
|
|
*/
|
|
|
|
|
|
/**
|
|
* @ngdoc directive
|
|
* @name ng.directive:ngMousedown
|
|
*
|
|
* @description
|
|
* The ngMousedown directive allows you to specify custom behavior on mousedown event.
|
|
*
|
|
* @element ANY
|
|
* @param {expression} ngMousedown {@link guide/expression Expression} to evaluate upon
|
|
* mousedown. (Event object is available as `$event`)
|
|
*
|
|
* @example
|
|
* See {@link ng.directive:ngClick ngClick}
|
|
*/
|
|
|
|
|
|
/**
|
|
* @ngdoc directive
|
|
* @name ng.directive:ngMouseup
|
|
*
|
|
* @description
|
|
* Specify custom behavior on mouseup event.
|
|
*
|
|
* @element ANY
|
|
* @param {expression} ngMouseup {@link guide/expression Expression} to evaluate upon
|
|
* mouseup. (Event object is available as `$event`)
|
|
*
|
|
* @example
|
|
* See {@link ng.directive:ngClick ngClick}
|
|
*/
|
|
|
|
/**
|
|
* @ngdoc directive
|
|
* @name ng.directive:ngMouseover
|
|
*
|
|
* @description
|
|
* Specify custom behavior on mouseover event.
|
|
*
|
|
* @element ANY
|
|
* @param {expression} ngMouseover {@link guide/expression Expression} to evaluate upon
|
|
* mouseover. (Event object is available as `$event`)
|
|
*
|
|
* @example
|
|
* See {@link ng.directive:ngClick ngClick}
|
|
*/
|
|
|
|
|
|
/**
|
|
* @ngdoc directive
|
|
* @name ng.directive:ngMouseenter
|
|
*
|
|
* @description
|
|
* Specify custom behavior on mouseenter event.
|
|
*
|
|
* @element ANY
|
|
* @param {expression} ngMouseenter {@link guide/expression Expression} to evaluate upon
|
|
* mouseenter. (Event object is available as `$event`)
|
|
*
|
|
* @example
|
|
* See {@link ng.directive:ngClick ngClick}
|
|
*/
|
|
|
|
|
|
/**
|
|
* @ngdoc directive
|
|
* @name ng.directive:ngMouseleave
|
|
*
|
|
* @description
|
|
* Specify custom behavior on mouseleave event.
|
|
*
|
|
* @element ANY
|
|
* @param {expression} ngMouseleave {@link guide/expression Expression} to evaluate upon
|
|
* mouseleave. (Event object is available as `$event`)
|
|
*
|
|
* @example
|
|
* See {@link ng.directive:ngClick ngClick}
|
|
*/
|
|
|
|
|
|
/**
|
|
* @ngdoc directive
|
|
* @name ng.directive:ngMousemove
|
|
*
|
|
* @description
|
|
* Specify custom behavior on mousemove event.
|
|
*
|
|
* @element ANY
|
|
* @param {expression} ngMousemove {@link guide/expression Expression} to evaluate upon
|
|
* mousemove. (Event object is available as `$event`)
|
|
*
|
|
* @example
|
|
* See {@link ng.directive:ngClick ngClick}
|
|
*/
|
|
|
|
|
|
/**
|
|
* @ngdoc directive
|
|
* @name ng.directive:ngKeydown
|
|
*
|
|
* @description
|
|
* Specify custom behavior on keydown event.
|
|
*
|
|
* @element ANY
|
|
* @param {expression} ngKeydown {@link guide/expression Expression} to evaluate upon
|
|
* keydown. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
|
|
*
|
|
* @example
|
|
* See {@link ng.directive:ngClick ngClick}
|
|
*/
|
|
|
|
|
|
/**
|
|
* @ngdoc directive
|
|
* @name ng.directive:ngKeyup
|
|
*
|
|
* @description
|
|
* Specify custom behavior on keyup event.
|
|
*
|
|
* @element ANY
|
|
* @param {expression} ngKeyup {@link guide/expression Expression} to evaluate upon
|
|
* keyup. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
|
|
*
|
|
* @example
|
|
* See {@link ng.directive:ngClick ngClick}
|
|
*/
|
|
|
|
|
|
/**
|
|
* @ngdoc directive
|
|
* @name ng.directive:ngKeypress
|
|
*
|
|
* @description
|
|
* Specify custom behavior on keypress event.
|
|
*
|
|
* @element ANY
|
|
* @param {expression} ngKeypress {@link guide/expression Expression} to evaluate upon
|
|
* keypress. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
|
|
*
|
|
* @example
|
|
* See {@link ng.directive:ngClick ngClick}
|
|
*/
|
|
|
|
|
|
/**
|
|
* @ngdoc directive
|
|
* @name ng.directive:ngSubmit
|
|
*
|
|
* @description
|
|
* Enables binding angular expressions to onsubmit events.
|
|
*
|
|
* Additionally it prevents the default action (which for form means sending the request to the
|
|
* server and reloading the current page) **but only if the form does not contain an `action`
|
|
* attribute**.
|
|
*
|
|
* @element form
|
|
* @param {expression} ngSubmit {@link guide/expression Expression} to eval. (Event object is available as `$event`)
|
|
*
|
|
* @example
|
|
<doc:example>
|
|
<doc:source>
|
|
<script>
|
|
function Ctrl($scope) {
|
|
$scope.list = [];
|
|
$scope.text = 'hello';
|
|
$scope.submit = function() {
|
|
if (this.text) {
|
|
this.list.push(this.text);
|
|
this.text = '';
|
|
}
|
|
};
|
|
}
|
|
</script>
|
|
<form ng-submit="submit()" ng-controller="Ctrl">
|
|
Enter text and hit enter:
|
|
<input type="text" ng-model="text" name="text" />
|
|
<input type="submit" id="submit" value="Submit" />
|
|
<pre>list={{list}}</pre>
|
|
</form>
|
|
</doc:source>
|
|
<doc:scenario>
|
|
it('should check ng-submit', function() {
|
|
expect(binding('list')).toBe('[]');
|
|
element('.doc-example-live #submit').click();
|
|
expect(binding('list')).toBe('["hello"]');
|
|
expect(input('text').val()).toBe('');
|
|
});
|
|
it('should ignore empty strings', function() {
|
|
expect(binding('list')).toBe('[]');
|
|
element('.doc-example-live #submit').click();
|
|
element('.doc-example-live #submit').click();
|
|
expect(binding('list')).toBe('["hello"]');
|
|
});
|
|
</doc:scenario>
|
|
</doc:example>
|
|
*/
|
|
|
|
/**
|
|
* @ngdoc directive
|
|
* @name ng.directive:ngFocus
|
|
*
|
|
* @description
|
|
* Specify custom behavior on focus event.
|
|
*
|
|
* @element window, input, select, textarea, a
|
|
* @param {expression} ngFocus {@link guide/expression Expression} to evaluate upon
|
|
* focus. (Event object is available as `$event`)
|
|
*
|
|
* @example
|
|
* See {@link ng.directive:ngClick ngClick}
|
|
*/
|
|
|
|
/**
|
|
* @ngdoc directive
|
|
* @name ng.directive:ngBlur
|
|
*
|
|
* @description
|
|
* Specify custom behavior on blur event.
|
|
*
|
|
* @element window, input, select, textarea, a
|
|
* @param {expression} ngBlur {@link guide/expression Expression} to evaluate upon
|
|
* blur. (Event object is available as `$event`)
|
|
*
|
|
* @example
|
|
* See {@link ng.directive:ngClick ngClick}
|
|
*/
|