mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-22 09:30:28 +00:00
44 lines
1.3 KiB
JavaScript
44 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* @ngdoc directive
|
|
* @name ng.directive:a
|
|
* @restrict E
|
|
*
|
|
* @description
|
|
* Modifies the default behavior of the html A tag so that the default action is prevented when
|
|
* the href attribute is empty.
|
|
*
|
|
* This change permits the easy creation of action links with the `ngClick` directive
|
|
* without changing the location or causing page reloads, e.g.:
|
|
* `<a href="" ng-click="list.addItem()">Add Item</a>`
|
|
*/
|
|
var htmlAnchorDirective = valueFn({
|
|
restrict: 'E',
|
|
compile: function(element, attr) {
|
|
|
|
if (msie <= 8) {
|
|
|
|
// turn <a href ng-click="..">link</a> into a stylable link in IE
|
|
// but only if it doesn't have name attribute, in which case it's an anchor
|
|
if (!attr.href && !attr.name) {
|
|
attr.$set('href', '');
|
|
}
|
|
|
|
// add a comment node to anchors to workaround IE bug that causes element content to be reset
|
|
// to new attribute content if attribute is updated with value containing @ and element also
|
|
// contains value with @
|
|
// see issue #1949
|
|
element.append(document.createComment('IE fix'));
|
|
}
|
|
|
|
return function(scope, element) {
|
|
element.on('click', function(event){
|
|
// if we have no href url, then don't navigate anywhere.
|
|
if (!element.attr('href')) {
|
|
event.preventDefault();
|
|
}
|
|
});
|
|
};
|
|
}
|
|
});
|