Make link-to directive more flexible

This commit is contained in:
Joe Fiorini 2015-05-13 13:09:22 -04:00
parent 16cc712b9e
commit cfdc4e49ba
2 changed files with 17 additions and 11 deletions

View File

@ -1,3 +1,5 @@
/* jshint unused: vars */
import {lookupRouteUrl} from './lookup-route-url';
/**
@ -37,9 +39,9 @@ import {lookupRouteUrl} from './lookup-route-url';
title: 'Featured',
body: 'This post is featured because it is awesome'
};">
<link-to route="post" model="{ id: featuredPost }">
<a link-to="post" model="{ id: featuredPost }">
{{featuredPost.title}}
</link-to>
</a>
</section>
</file>
</example>
@ -47,20 +49,19 @@ import {lookupRouteUrl} from './lookup-route-url';
*/
export default
[ '$route',
'$location',
'transitionTo',
function($routeProvider, transitionTo) {
function($routeProvider, $location, transitionTo) {
return {
restrict: 'E',
transclude: true,
template: '<a href="{{url}}" data-transition-to title="{{routeName}}" ng-transclude></a>',
restrict: 'A',
scope: {
routeName: '@route',
routeName: '@linkTo',
model: '&'
},
link: function(scope, element) {
link: function (scope, element, attrs) {
var model = scope.$eval(scope.model);
scope.url = lookupRouteUrl(scope.routeName, $routeProvider.routes, model);
scope.url = lookupRouteUrl(scope.routeName, $routeProvider.routes, model, $location.$$html5);
element.find('[data-transition-to]').on('click', function(e) {
e.stopPropagation();
@ -68,6 +69,7 @@ export default
transitionTo(scope.routeName, model);
});
element.attr('href', scope.url);
}
};
}

View File

@ -1,4 +1,4 @@
export function lookupRouteUrl(name, routes, models) {
export function lookupRouteUrl(name, routes, models, html5Mode) {
var route = _.find(routes, {name: name});
if (angular.isUndefined(route)) {
@ -39,5 +39,9 @@ export function lookupRouteUrl(name, routes, models) {
}
if (!html5Mode) {
routeUrl = '#' + routeUrl;
}
return routeUrl;
}