AngularFire:在$firebaseArray更改时运行方法
AngularFire: run method when $firebaseArray changes
我有以下设置:
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);
相关文章:
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- PhantomJS - 检查javascript函数是否正在运行的任何方法
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- Meteor应用程序无法运行-对象#<编译器>没有方法'主机'
- 使用c#在Web服务器上运行JavaScript方法
- strongloop script.js run find in before delete方法:如何同步运行异步方法
- jQuery 在运行 C# 方法时重置
- 在浏览器关闭选项卡或浏览器退出上运行方法
- jQuery 运行 C# 方法
- Angularjs $injector:unpr 在缩小后的运行方法中
- 检查隐藏的布尔值以运行方法
- 引导方法和运行方法之间的角度有什么区别
- 基于集合侦听器运行方法的主干
- 运行方法中的Angular$q服务实现
- 在第一个方法完成后运行方法
- AngularFire:在$firebaseArray更改时运行方法
- 如何在用户关闭浏览器时在控制器中运行方法
- $.ajax()成功调用,但不会运行方法
- AngularJS:如何保持在'运行'方法,直到完成
- 在"add"事件上运行方法的Backbone Collection获取:";TypeErr