getElementById仅在第一次起作用

时间:2017-04-22 09:00:59

标签: javascript angular typescript ionic2 ionic3

我正在使用Ionic 2并试图在

上使用@Test public void showFlagAndName(){ DetailsView mockView = mock(DetailsView.class); DetailsPresenter presenter = new DetailsPresenter(); Country country = new Country("Italy", "italyFlag"); presenter.attachView(mockView); presenter.showCountry(country); verify(mockView, times(1)).showCountry("Italy"); verify(mockView, times(1)).setFlag("italyFlag"); }
getElementbyId

这样我就可以通过以下方式添加项目:

 <ion-content padding>    
   <ion-list id="list"></ion-list>    
 </ion-content>

第一次完全正常,但是如果我退出页面并重新打开它,我会收到错误消息

  

无法在null

上读取属性appendChild

。我已经读过其他问题,他们说脚本不在底部。通过计算在Ionic中的数量,你根本不把脚本放在html中我不知道是什么原因造成的。

修改

我上传了文件here主要问题在于聊天详细信息,聊天详情是通过聊天打开的。

1 个答案:

答案 0 :(得分:4)

你到底想要做什么?我认为你用旧的Jquery方式思考,但是Ionic在Angular2之上工作,所以事情以不同的方式完成。

我假设您要将新项目附加到列表中,这可以通过使用* ngFor和一组数据来完成。或者,如果要在特定条件下显示消息,可以使用* ngIf来完成此操作。 您应该尽量避免直接引用DOM,而是更新组件代码以更改视图中显示的数据。

我已创建此demo plunker只是为了向您展示如何以 Angular2方式执行这些操作。请让我知道预期的结果是什么,所以我可以相应地更新plunker。

组件代码:

@Component({
  selector: 'page-home',
  templateUrl: 'app/home.page.html'
})
export class HomePage {

  private count: number;
  public users: Array<string>;

  public showMessage: boolean;
  public message: string;

  constructor() {
    this.count = 1;
    this.users = [];

    this.showMessage = false;
    this.message = 'This is a secret message!';
  }

  public addUser(): void {
    this.users.push(`User ${this.count++}`);
  }

  public toggleMessage(): void {
    this.showMessage = !this.showMessage;
  }

}

查看代码:

<ion-header>
  <ion-navbar>
    <ion-title>HomePage</ion-title>
  </ion-navbar>
</ion-header>

<ion-content padding>
  <h2>Users</h2>
  <p *ngIf="showMessage">{{ message }}</p>
  <ion-list *ngFor="let user of users">
    <ion-item>
      <p>{{ user }}</p>
    </ion-item>
  </ion-list>
  <button ion-button (click)="addUser()">Add a user</button>
  <button ion-button (click)="toggleMessage()">Togle message</button>

</ion-content>