• Angular2.js——主从结构


    学习这一篇的内容,还回到我们快速起步的应用上来。

    主从结构,我们想要做一个英雄的列表,我们希望用户在列表中选中一个英雄,然后这个被选中的英雄出现在详情视图中。主视图是英雄列表,从视图则是被选中英雄的详细信息。

    1、创建英雄

    我们先创建一个由视为英雄组成的数组:

    修改app.component.ts文件:

    import { Component } from '@angular/core';
    //创建Hero类
    export class Hero{
        id:number;
        name:string;
    }
    
    const HEROES:Hero[]=[
        {id:1,name:'A'},
        {id:2,name:'B'},
        {id:3,name:'C'},
        {id:4,name:'D'},
        {id:5,name:'E'},
        {id:6,name:'F'},
        {id:7,name:'G'},
        {id:8,name:'H'},
        {id:9,name:'I'},
        {id:10,name:'J'}
    ];
    
    @Component({
    selector: 'my-app',
    template: `
        <h1>My second Angular App</h1>
        `
    })
    export class AppComponent1 {
      
    }

    HEROES是一个由Hero类的实例构成的数组。

    2、暴露英雄

    在app.component.ts创建一个属性供调用

    
    
    export class AppComponent1 {
        heroes= HEROES;
    }
    
    

    3、在模板中显示英雄

    我们的组件中有了heroes属性,我们就可以在模板中创建一个英雄的无序列表

    app.component.ts

    <ul class="heroes">
            <li *ngFor="let hero of heroes">
                <span class="badge">{{hero.id}}</span>{{hero.name}}
            </li>
        </ul>

    这样我们就在页面中看到了一个英雄列表。

    4、添加样式

    创建style.css文件,在index.html中引入

    .heroes{margin:0 0 20px 0;list-style:none;padding:0;200px;}
    .heroes li{cursor:pointer;background:#eee;margin:5px;padding:3px 5px;}
    .heroes li.selected:hover{background:#bbd8dc;color:#fff;}
    .heroes li:hover{color:#607d8b;background:#ddd;}
    .heroes .badge{
        font-size:16px;
        color:#fff;
        display:inline-block;
        padding:5px;
        background:#607d8b;
        15px;
        text-align:center;
        margin:0 10px 0 0;
    }

    我们需要点击列表中某一个英雄时,底部显示其详细信息,这时我们需要点击事件。

    5、点击事件

    <ul class="heroes">
            <li *ngFor="let hero of heroes" (click)="onSelect(hero)">
                <span class="badge">{{hero.id}}</span>{{hero.name}}
            </li>
            <!--圆括号标识<li>元素上的click事件是绑定的目标,等号右边的表达式调用AppComponent的onSelect方法,并把模板变量hero作为参数传进去-->
        </ul>

    6、添加事件处理器

    我们的事件绑定了onselect方法,我们就要把它添加到组件中。

    export class AppComponent1 {
        heroes= HEROES;
        selectedHero:Hero;
        onSelect(hero:Hero):void{
        this.selectedHero=hero;
    }
    }

    7、把所选的英雄显示在模板中

    <div *ngIf="selectedHero">
            <h2>{{selectedHero.name}}详细信息</h2>
            <div><label>id:</label>{{selectedHero.id}}</div>
            <div>
                <label>姓名:</label>
                <input [(ngModel)]="selectedHero.name" placeholder="name">
            </div>
        </div>

    当选中时,selectedHero成了真值,就把英雄详情添加到DOM中。

    现在基本效果实现了

    我们想选中一个英雄后有一个背景颜色的变化,凸显出来。

    在app.component.ts中添加:

    <ul class="heroes">
            <li *ngFor="let hero of heroes" (click)="onSelect(hero)" [class.selected]="hero===selectedHero">
                <span class="badge">{{hero.id}}</span>{{hero.name}}
            </li>
            <!--圆括号标识<li>元素上的click事件是绑定的目标,等号右边的表达式调用AppComponent的onSelect方法, 并把模板变量hero作为参数传进去-->
        </ul>

    我们在class上为selected类添加一个属性绑定,我们把绑定的值设置为selectedHero和hero的比较结果。

    当被选中时即hero===selectedHero时,添加selected类

    在CSS中添加

    .heroes li.selected{background:#666;color:#fff;}

     这样点击的时候,被选中的这个英雄就与其他英雄有了背景颜色的变化啦。

     

    参考:https://angular.cn/docs/ts/latest/tutorial/toh-pt2.html

  • 相关阅读:
    自定义协议的注册及程序示例转载
    在windows phone 中使用原生代码开发程序(native code)
    C# 操作系统防火墙转载
    WP7Windows Phone的Isolated Storage Explorer使用指南
    如何让wp7真机调试时候保持屏幕高亮不锁屏
    利用C#检测证书是否存在,并安装证书
    WPF设置附加属性的值
    wpf值转换器IValueConverter转载
    ADO.NET一些内幕
    怎样将数据库中所有表中含有numeric(18,2)字段改成numeric(18,10)及将float改成numeric
  • 原文地址:https://www.cnblogs.com/zhaixr/p/6625394.html
Copyright © 2020-2023  润新知