55 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | /* | ||
|  | * Angular.io Live Example Directive | ||
|  | * | ||
|  | * Renders a link to a live/host example of the doc chapter | ||
|  | * app this directive is contained in. | ||
|  | *  | ||
|  | * Usage: | ||
|  | *   <live-example [name="..."] [noSource] [srcText="..."]>text</live-example> | ||
|  | * Example: | ||
|  | *   <p>Run <live-example name="toh-1">this chapter's example</live-example></p>. | ||
|  | */ | ||
|  | 
 | ||
|  | angularIO.directive('liveExample', ['$location', function ($location) { | ||
|  | 
 | ||
|  |   function a(text, attrs) { | ||
|  |     var attr = (attrs.href ? ' href="' + attrs.href + '"' : '') + | ||
|  |       (attrs.target ? ' target="' + attrs.target + '"' : ''); | ||
|  |     return '<a' + attr +  '>' + text + '</a>'; | ||
|  |   } | ||
|  | 
 | ||
|  |   function span(text) { return '<span>' + text + '</span>'; } | ||
|  | 
 | ||
|  |   return { | ||
|  |     restrict: 'E', | ||
|  | 
 | ||
|  |     compile: function (tElement, attrs) { | ||
|  |       var text = tElement.text() || 'live example'; | ||
|  |       var ex = attrs.name || NgIoUtil.getExampleName($location); | ||
|  |       var href, template; | ||
|  | 
 | ||
|  |       var isForDart = attrs.lang === 'dart' || NgIoUtil.isDartDoc($location); | ||
|  |       var href = isForDart | ||
|  |         ? 'http://angular-examples.github.io/' + ex | ||
|  |         : '/resources/live-examples/' + ex + '/ts/plnkr.html'; | ||
|  | 
 | ||
|  |       // Link to live example.
 | ||
|  |       var template = a(text, { href: href, target: '_blank' }); | ||
|  | 
 | ||
|  |       // The hosted example and sources are in different locations for Dart.
 | ||
|  |       // Also show link to sources for Dart, unless noSource is specified.
 | ||
|  |       if (isForDart && !attrs.hasOwnProperty('nosource')) { | ||
|  |         var srcText = attrs.srcText || 'view source'; | ||
|  |         var srcHref = 'http://github.com/angular-examples/' + ex; | ||
|  |         template = span(template + ' (' + a(srcText, { href: srcHref, target: '_blank' }) + ')'); | ||
|  |       } | ||
|  | 
 | ||
|  |       // UPDATE ELEMENT WITH NEW TEMPLATE
 | ||
|  |       tElement.html(template); | ||
|  | 
 | ||
|  |       // RETURN ELEMENT
 | ||
|  |       return function (scope, element, attrs) { }; | ||
|  |     } | ||
|  |   }; | ||
|  | }]); |