如果 firebaseRef 设置为新值,是否有必要调用 .off()?

Is it necessary to call .off() if firebaseRef set to new value?

如果我这样做:

var firebaseRef = new Firebase(url);
firebaseRef.on("value", function(dataSnapshot) { ... });

然后我将 firebaseRef 重置为:

firebaseRef = new Firebase(newUrl);

之前的 .on(...) 侦听器会被自动删除还是我应该在将 firebaseRef 设置为 new Firebase(newUrl)

之前调用 .off()

让我们试试看:

var ref = new Firebase('https://Whosebug.firebaseio.com/30541902');
ref.on("value", function(snapshot) { 
  console.log(snapshot.val());
});
ref.set('1');
//ref.off();
ref = new Firebase('https://Whosebug.firebaseio.com/30541902');
ref.set('2');

输出:

1
2

因此您需要先调用 off,然后再将新值分配给 ref。幸运的是,这就像取消注释行一样简单。

这是 jsbin:http://jsbin.com/viheso/1/edit?js,console