重新访问页面后,无法读取属性scrollToBottom为null

时间:2017-01-01 19:13:47

标签: typescript ionic-framework ionic2 scrollto

Your system information:

Cordova CLI: 6.4.0

Ionic Framework Version: 2.0.0-rc.4

Ionic CLI Version: 2.1.14

Ionic App Lib Version: 2.1.7

Ionic App Scripts Version: 0.0.47

ios-deploy version: Not installed

ios-sim version: Not installed

OS: Windows 7

Node Version: v6.9.2

Xcode version: Not installed

我在推送到对话视图后得到此错误。随着socketIO im连接到我的消息服务器,它正在向客户端推送新消息。在此之后我想自动向下滚动,这样就会显示最新的消息。

如果我第一次打开转换窗口我很好用它并且一切正常,但是第二次(按下并重新登陆页面)我收到了这个错误。

谢谢:)

编辑:错误消息:

  

无法读取null的属性scrollToBottom

connect() {
  this.socket.on("connect", () => {
      console.log("connected");  
      console.log("Listening on: "+"message_"+this.secretid);
      this.socket.emit('message', { type: "token", token: this.secretid });
      this.socket.on("message_"+this.secretid, (msg) => {
          let msg_data = JSON.parse(msg);
          msg_data.payload.writer_id = msg_data.payload.user;
          console.log(msg_data);
          this.chat.push(msg_data.payload);
          this.content.scrollToBottom(); <<--Error
      });
  });
}

ionViewDidLoad() {}中调用了连接,因此应初始化this.content

我使用离子2

编辑2:仅在Ionic Lab中出现此错误

3 个答案:

答案 0 :(得分:1)

ionviewdidload生命周期钩子被调用用于页面初始化并被调用一次。 Docs here

视图可能尚未加载。

从给定的代码中,我看到的解决方案是将scrollTobottom调用放在ionviewWillEnter

或尝试Angular的ngOnChanges Here,您可以在其中检查聊天列表中的更改。

答案 1 :(得分:0)

试试这个:

<span id="ruler" style="visibility: hidden; white-space: nowrap;"></span>

答案 2 :(得分:0)

您需要将this.content.scrollToBottom(0);在有条件的情况下。像这样:

if(this.content._scroll) {

this.content.scrollToBottom(0);

}

请尝试一次。