AngularFire:在$firebaseArray更改时运行方法

AngularFire: run method when $firebaseArray changes

本文关键字:运行 方法 firebaseArray AngularFire      更新时间:2023-09-26

我有以下设置:

var x = $firebaseArray(ref);
x.$loaded().then(function () {
    self.y = //I change y based on x
}

根据文档,$loaded只运行一次,但每次x更新时我都需要更改self.y。我知道我可以扩展$firebaseArray,但在我的情况下,这不是一个选项,因为self.y在另一个$firebaseArray上也是可靠的。

所以我的问题是:有没有办法在每次$firebaseArray更新时运行一个方法,即使是在一般情况下在JavaScript中,有没有办法观察变量的变化,并在每次更新时运行方法

如果您想在数据发生更改时对其执行某些操作,$loaded()是错误的方法。相反,您将希望扩展$firebaseArray并覆盖$$added$$changed。。。方法。有关扩展$firebaseObject的示例,请参见此fiddle,它与此类似。

但是,如果您没有将$firebaseArray()绑定到作用域,那么您还可以使用常规的Firebase JavaScript SDK并使用on('value':

ref.on('value', function(snapshot) {
    self.y = // change y based on snapshot.val()
});

AngularFire是一个很好的库,用于将Firebase数据绑定到AngularJS视图。它不是Firebase JavaScript SDK的替代品。事实上,它是建立在Firebase JavaScript SDK之上的,两者可以完美地互操作。因此,使用AngularFire将数据绑定到视图(如果需要自定义数据,可以扩展$firebaseArray),对未绑定到视图的数据使用Firebase JavaScript SDK。

如果使用AngularJS,则可以使用$watch。点击此处阅读更多

在你的情况下,你可以做

  $scope.$watch('$firebaseArray', function(newV, oldV) {
         // Run whatever method you want
      }, true);