按照v2文档和this主题,我可以在点击时获得正确的图标,虽然未显示默认图标,但视图将返回undefined,因此不会呈现任何图标。 这就是我正在做的事情:
使用API中的服务加载数据
loadUserRepos(login: string): Observable<Repo[]> {
return this.http.get(`${this.githubApiUrl}/users/${login}/repos`)
.map(res => <Repo[]>(res.json()))
}
初始化数据数组时默认初始化图标:
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';
}
}
在模板中添加了绑定:
<ion-card *ngFor="let repo of repos">
// there is more layout markup
<ion-icon [name]="repo.starIcon"></ion-icon>
</ion-card>
所以这是返回undefined,即使我在构造函数中填充starIcon,或者在viewLoaded事件中,我也是未定义的。 如果我删除repo,正确的值(星形轮廓)会呈现正确的图标,但我不能再使用点击来切换。
将click事件添加到包含图标的按钮 - 并且它可以正常工作
public changeIcon(item): void {
item.starIcon = 'star';
}
我错过了什么?这可能是一个愚蠢的问题,因为我没有在任何地方保存点击,但仍然困扰我不知道;)我希望我添加了足够的信息, 谢谢大家