diff options
Diffstat (limited to 'src/ng/directive/a.js')
| -rw-r--r-- | src/ng/directive/a.js | 29 | 
1 files changed, 29 insertions, 0 deletions
| diff --git a/src/ng/directive/a.js b/src/ng/directive/a.js new file mode 100644 index 00000000..d96af784 --- /dev/null +++ b/src/ng/directive/a.js @@ -0,0 +1,29 @@ +'use strict'; + +/* + * Modifies the default behavior of html A tag, so that the default action is prevented when href + * attribute is empty. + * + * The reasoning for this change is to allow easy creation of action links with ng-click without + * changing the location or causing page reloads, e.g.: + * <a href="" ng-click="model.$save()">Save</a> + */ +var htmlAnchorDirective = valueFn({ +  restrict: 'E', +  compile: function(element, attr) { +    // turn <a href ng-click="..">link</a> into a link in IE +    // but only if it doesn't have name attribute, in which case it's an anchor +    if (!attr.href) { +      attr.$set('href', ''); +    } + +    return function(scope, element) { +      element.bind('click', function(event){ +        // if we have no href url, then don't navigate anywhere. +        if (!element.attr('href')) { +          event.preventDefault(); +        } +      }); +    } +  } +}); | 
