在我的自定义Polymer元素中,我有一个查询firebase实例的方法,如下所示:
_updateUser: function(user) {
if(this._firebaseRef) {
this._firebaseRef.off()
}
if(user) {
var userLocation = ['xxxxx.firebaseio.com', 'users', this.user.uid].join('/');
this._firebaseRef = new Firebase(userLocation);
var query = this._firebaseRef.orderByChild("username")
query.on("value", function(messageSnapshot) {
messageSnapshot.forEach(function(messageData){
this.set('usernames', []);
console.log(this);
});
},null, this);
}
},
但是,我一直收到以下错误Uncaught TypeError: this.set is not a function
。似乎this
未根据api documentation
我可以知道如何在回调中成功调用this.set
吗?感谢。
答案 0 :(得分:3)
您还需要将上下文传递给forEach
函数。
messageSnapshot.forEach(function (messageData) {...}, this)
或
messageSnapshot.forEach(function (messageData) {...}.bind(this))