Con*_*ror 7 javascript angularjs firebase angularfire
我想在恢复我的firebase数据后调用一个函数,但是,我没有看到任何promises函数就像ref对象那样.有什么建议吗?这是我的代码:
angular.module('myMod', ['firebase']).controller('myCtrl', ['$scope', '$firebase',
function($scope, $firebase) {
var ref = new Firebase('myfirebaseurl');
$scope.data = $firebase(ref);
// i want to do something like
data.then(function(){
someFunc();
});
// or something like
$scope.$watch('data', function(){
if($scope.data.desiredProperty) {
doSomething();
}
});
}]);
Run Code Online (Sandbox Code Playgroud)
AngularFire 为“已加载”和“已更改”事件提供事件处理程序。来自带注释的来源:
object.$on = function(type, callback) {
switch (type) {
case "change":
self._onChange.push(callback);
break;
case "loaded":
self._onLoaded.push(callback);
break;
default:
throw new Error("Invalid event type " + type + " specified");
}
};
Run Code Online (Sandbox Code Playgroud)
所以你应该能够做这样的事情:
var ref = new Firebase('myfirebaseurl');
$scope.data = $firebase(ref);
$scope.data.$on('loaded', function(){
if($scope.data.desiredProperty) {
doSomething();
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:
看起来当 AngularFireloaded事件触发时,该$scope.data对象尚未完全填充。这似乎是一个已知问题,但有一些方法可以解决它。
访问数据作为loaded回调函数的参数:
$scope.data.$on("loaded", function(data) {
console.log(data);
}
Run Code Online (Sandbox Code Playgroud)
完全跳过 AngularFire 并直接使用 Firebase API:
ref.on("value", function(data) {
console.log(data.val());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2848 次 |
| 最近记录: |