115 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
// #docregion pt2
 | 
						|
import 'package:angular2/core.dart';
 | 
						|
 | 
						|
class Hero {
 | 
						|
  final int id;
 | 
						|
  String name;
 | 
						|
 | 
						|
  Hero(this.id, this.name);
 | 
						|
}
 | 
						|
 | 
						|
@Component(
 | 
						|
    selector: 'my-app',
 | 
						|
    template: '''
 | 
						|
      <h1>{{title}}</h1>
 | 
						|
      <h2>My Heroes</h2>
 | 
						|
      <ul class="heroes">
 | 
						|
        <li *ngFor="#hero of heroes"
 | 
						|
          [class.selected]="hero == selectedHero"
 | 
						|
          (click)="onSelect(hero)">
 | 
						|
          <span class="badge">{{hero.id}}</span> {{hero.name}}
 | 
						|
        </li>
 | 
						|
      </ul>
 | 
						|
      <div *ngIf="selectedHero != null">
 | 
						|
        <h2>{{selectedHero.name}} details!</h2>
 | 
						|
        <div><label>id: </label>{{selectedHero.id}}</div>
 | 
						|
        <div>
 | 
						|
          <label>name: </label>
 | 
						|
          <input [(ngModel)]="selectedHero.name" placeholder="name"/>
 | 
						|
        </div>
 | 
						|
      </div>
 | 
						|
    ''',
 | 
						|
// #docregion styles-1
 | 
						|
    styles: const [
 | 
						|
      '''
 | 
						|
      .selected {
 | 
						|
        background-color: #CFD8DC !important;
 | 
						|
        color: white;
 | 
						|
      }
 | 
						|
      .heroes {
 | 
						|
        margin: 0 0 2em 0;
 | 
						|
        list-style-type: none;
 | 
						|
        padding: 0;
 | 
						|
        width: 10em;
 | 
						|
      }
 | 
						|
      .heroes li {
 | 
						|
        cursor: pointer;
 | 
						|
        position: relative;
 | 
						|
        left: 0;
 | 
						|
        background-color: #EEE;
 | 
						|
        margin: .5em;
 | 
						|
        padding: .3em 0em;
 | 
						|
        height: 1.6em;
 | 
						|
        border-radius: 4px;
 | 
						|
      }
 | 
						|
      .heroes li.selected:hover {
 | 
						|
        color: white;
 | 
						|
      }
 | 
						|
      .heroes li:hover {
 | 
						|
        color: #607D8B;
 | 
						|
        background-color: #EEE;
 | 
						|
        left: .1em;
 | 
						|
      }
 | 
						|
      .heroes .text {
 | 
						|
        position: relative;
 | 
						|
        top: -3px;
 | 
						|
      }
 | 
						|
      .heroes .badge {
 | 
						|
        display: inline-block;
 | 
						|
        font-size: small;
 | 
						|
        color: white;
 | 
						|
        padding: 0.8em 0.7em 0em 0.7em;
 | 
						|
        background-color: #607D8B;
 | 
						|
        line-height: 1em;
 | 
						|
        position: relative;
 | 
						|
        left: -1px;
 | 
						|
        top: -4px;
 | 
						|
        height: 1.8em;
 | 
						|
        margin-right: .8em;
 | 
						|
        border-radius: 4px 0px 0px 4px;
 | 
						|
      }
 | 
						|
    '''
 | 
						|
    ])
 | 
						|
// #enddocregion styles-1
 | 
						|
class AppComponent {
 | 
						|
  final String title = 'Tour of Heroes';
 | 
						|
  final List<Hero> heroes = mockHeroes;
 | 
						|
// #docregion selected-hero-1
 | 
						|
  Hero selectedHero;
 | 
						|
// #enddocregion selected-hero-1
 | 
						|
 | 
						|
// #docregion on-select-1
 | 
						|
  onSelect(Hero hero) {
 | 
						|
    selectedHero = hero;
 | 
						|
  }
 | 
						|
// #enddocregion on-select-1
 | 
						|
}
 | 
						|
// #enddocregion pt2
 | 
						|
 | 
						|
// #docregion hero-array
 | 
						|
final List<Hero> mockHeroes = [
 | 
						|
  new Hero(11, "Mr. Nice"),
 | 
						|
  new Hero(12, "Narco"),
 | 
						|
  new Hero(13, "Bombasto"),
 | 
						|
  new Hero(14, "Celeritas"),
 | 
						|
  new Hero(15, "Magneta"),
 | 
						|
  new Hero(16, "RubberMan"),
 | 
						|
  new Hero(17, "Dynama"),
 | 
						|
  new Hero(18, "Dr IQ"),
 | 
						|
  new Hero(19, "Magma"),
 | 
						|
  new Hero(20, "Tornado")
 | 
						|
];
 | 
						|
// #enddocregion hero-array
 | 
						|
 | 
						|
// #enddocregion pt2
 |