86 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			86 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								block includes
							 | 
						|||
| 
								 | 
							
								  include ../_util-fns
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								:marked
							 | 
						|||
| 
								 | 
							
								  # Tour of Heroes: the vision
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  Our grand plan is to build an app to help a staffing agency manage its stable of heroes.
							 | 
						|||
| 
								 | 
							
								  Even heroes need to find work.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  Of course we'll only make a little progress in this tutorial. What we do build will
							 | 
						|||
| 
								 | 
							
								  have many of the features we expect to find in a full-blown, data-driven application: acquiring and displaying
							 | 
						|||
| 
								 | 
							
								  a list of heroes, editing a selected hero's detail, and navigating among different
							 | 
						|||
| 
								 | 
							
								  views of heroic data.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  The Tour of Heroes covers the core fundamentals of Angular.
							 | 
						|||
| 
								 | 
							
								  We’ll use built-in directives to show/hide elements and display lists of hero data.
							 | 
						|||
| 
								 | 
							
								  We’ll create a component to display hero details and another to show an array of heroes.
							 | 
						|||
| 
								 | 
							
								  We'll use one-way data binding for read-only data. We'll add editable fields to update a model
							 | 
						|||
| 
								 | 
							
								  with two-way data binding. We'll bind component methods to user events like key strokes and clicks.
							 | 
						|||
| 
								 | 
							
								  We’ll learn to select a hero from a master list and edit that hero in the details view. We'll
							 | 
						|||
| 
								 | 
							
								  format data with pipes. We'll create a shared service to assemble our heroes. And we'll use routing to navigate among different views and their components.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  We’ll learn enough core Angular to get started and gain confidence that
							 | 
						|||
| 
								 | 
							
								  Angular can do whatever we need it to do.
							 | 
						|||
| 
								 | 
							
								  We'll be covering a lot of ground at an introductory level but we’ll find plenty of links
							 | 
						|||
| 
								 | 
							
								  to chapters with greater depth.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  Run the <live-example name="toh-6"></live-example>.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								.l-main-section
							 | 
						|||
| 
								 | 
							
								:marked
							 | 
						|||
| 
								 | 
							
								  ## The End Game
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  Here's a visual idea of where we're going in this tour, beginning with the "Dashboard"
							 | 
						|||
| 
								 | 
							
								  view and our most heroic heroes:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								figure.image-display
							 | 
						|||
| 
								 | 
							
								  img(src='/resources/images/devguide/toh/heroes-dashboard-1.png' alt="Output of heroes dashboard")
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								:marked
							 | 
						|||
| 
								 | 
							
								  Above the dashboard are two links ("Dashboard" and "Heroes").
							 | 
						|||
| 
								 | 
							
								  We could click them to navigate between this Dashboard and a Heroes view.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  Instead we click the dashboard hero named "Magneta" and the router takes us to a "Hero Details" view
							 | 
						|||
| 
								 | 
							
								  of that hero where we can change the hero's name.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								figure.image-display
							 | 
						|||
| 
								 | 
							
								  img(src='/resources/images/devguide/toh/hero-details-1.png' alt="Details of hero in app")
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								:marked
							 | 
						|||
| 
								 | 
							
								  Clicking the "Back" button would return us to the "Dashboard".
							 | 
						|||
| 
								 | 
							
								  Links at the top can take us to either of the main views.
							 | 
						|||
| 
								 | 
							
								  We'll click "Heroes". The app takes to the "Heroes" master list view.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								figure.image-display
							 | 
						|||
| 
								 | 
							
								  img(src='/resources/images/devguide/toh/heroes-list-2.png' alt="Output of heroes list app")
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								:marked
							 | 
						|||
| 
								 | 
							
								  We click a different hero and the readonly mini-detail beneath the list reflects our new choice.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  We click the "View Details" button to drill into the
							 | 
						|||
| 
								 | 
							
								  editable details of our selected hero.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  The following diagram captures all of our navigation options.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								figure.image-display
							 | 
						|||
| 
								 | 
							
								  img(src='/resources/images/devguide/toh/nav-diagram.png' alt="View navigations")
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								:marked
							 | 
						|||
| 
								 | 
							
								  Here's our app in action
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								figure.image-display
							 | 
						|||
| 
								 | 
							
								  img(src='/resources/images/devguide/toh/toh-anim.gif' alt="Tour of Heroes in Action")
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								.l-main-section
							 | 
						|||
| 
								 | 
							
								:marked
							 | 
						|||
| 
								 | 
							
								  ## Up Next
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  We’ll build this Tour of Heroes together, step by step.
							 | 
						|||
| 
								 | 
							
								  We'll motivate each step with a requirement that we've
							 | 
						|||
| 
								 | 
							
								  met in countless applications. Everything has a reason.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  And we’ll meet many of the core fundamentals of Angular along the way.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  [Let's get started!](./toh-pt1.html)
							 |