离子2 - 单击切换图标[名称]

时间:2017-01-30 05:34:20

标签: angular ionic2

按照v2文档和this主题,我可以在点击时获得正确的图标,虽然未显示默认图标,但视图将返回undefined,因此不会呈现任何图标。 这就是我正在做的事情:

  1. 使用API​​中的服务加载数据

     loadUserRepos(login: string): Observable<Repo[]> {
      return this.http.get(`${this.githubApiUrl}/users/${login}/repos`)
      .map(res => <Repo[]>(res.json()))
      }
    
  2. 初始化数据数组时默认初始化图标:

    export class UserReposPage {
     public starIcon: string = 'star-outline';
     repos: Repo[];
     login: string;
     constructor(public navCtrl: NavController, public navParams: NavParams, private githubUsers: GithubUsers) {
       this.login = navParams.get('login');
       // this.login = login;
       githubUsers.loadUserRepos(this.login).subscribe(repos => {
       // this.starIcon = 'star-outline';
       this.repos = repos;
     })
    }
    
     ionViewDidLoad() {
       console.log('ionViewDidLoad UserReposPage');
       // this.starIcon = 'star-outline';
      }
      public changeIcon(item): void {
     // console.log(item);
       item.starIcon = 'star';
       }
     }
    
  3. 在模板中添加了绑定:

    <ion-card *ngFor="let repo of repos">
      // there is more layout markup
      <ion-icon [name]="repo.starIcon"></ion-icon>
    </ion-card>
    
  4. 所以这是返回undefined,即使我在构造函数中填充starIcon,或者在viewLoaded事件中,我也是未定义的。 如果我删除repo,正确的值(星形轮廓)会呈现正确的图标,但我不能再使用点击来切换。

    1. 将click事件添加到包含图标的按钮 - 并且它可以正常工作

      public changeIcon(item): void {
      item.starIcon = 'star';
      }
      
    2. 我错过了什么?这可能是一个愚蠢的问题,因为我没有在任何地方保存点击,但仍然困扰我不知道;)我希望我添加了足够的信息, 谢谢大家

0 个答案:

没有答案