javascript - Firebase child_added `this` 不起作用

标签 javascript firebase angular ionic2

我正在使用 Angular2、ionic2 和 firebase 开发聊天应用程序。 为了获得聊天,我尝试了以下方法

Controller 代码:

displayAllMessage() {
    let myDataRef = new Firebase("firbaseurl");
    myDataRef.on('child_added', function(snapshot) {
      this.message = snapshot.val();
      console.log(this.message);
    });
  }

查看代码:

<h1> {{message.text}} </h1>

但这里的问题是 - 如果我使用 this.message 它会抛出错误,说 this.message 未定义,如果我使用 var message 而不是 this 那么它就可以正常工作。如果我使用 var message 那么我无法在 View 中显示它。

提前谢谢您。

最佳答案

使用箭头函数 () => { ... } 而不是 function () { ... } 来保留 this 的范围。

  displayAllMessage() {
    let myDataRef = new Firebase("firbaseurl");
    myDataRef.on('child_added', (snapshot) => {
      this.message = snapshot.val();
      console.log(this.message);
    });
  }

另请参阅https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Functions/Arrow_functions

  displayAllMessage() {
    let myDataRef = new Firebase("firbaseurl");
    myDataRef.on('child_added', function (snapshot) {
      this.message = snapshot.val();
      console.log(this.message);
    }.bind(this));
  }

关于javascript - Firebase child_added `this` 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36571684/

相关文章:

javascript - 如何将v-model添加到组件中动态添加的html输入中

javascript - .js 脚本添加的额外字符

android - 在我的实时设备上运行代码时,Firebase 作业调度程序不会触发我的 JobService 类,为什么?

angular - 无法使用带有 ngClass 绑定(bind)的可观察对象来更新 View

javascript - 评估类构造函数中的参数

javascript - 使用 JavaScript 对 Firebase 数据库中的电子邮件 ID 和电话号码进行重复检查

javascript - PHP形式的mysql插入语句

firebase - FCM(Firebase 云消息)中的服务器 key 和旧服务器 key 有什么区别

javascript - 将新数据推送到 firebase 数据库时设置自定义数字键

angular - 为什么 Infragistics Ignite UI 的 Angular ListView 样式不起作用?