Firebase ref.once()被神秘地跳过了

时间:2015-02-28 15:38:03

标签: angularjs firebase angularfire

我有一个使用Firebase的闹钟应用,当用户第一次使用时,3个示例任务被添加到列表并保存到Firebase。为了防止再次添加这些示例任务,我的代码应该检查快照(Firebase中的数据表示)并跳过$ scope.data。$ add部分。但是,每次刷新页面时,它会不断添加3个样本。

在Chrome开发工具中跟踪代码执行时,刷新页面时会跳过ref.once()块,因此不会定义快照,这就解释了为什么会一次又一次地添加示例任务。

请告知我缺少的东西。谢谢!

ref.once('value', function(snapshot) {

  $scope.total = snapshot.numChildren();
});


if ($scope.total == 0) {
  $scope.list = [
    {content: "9am", event: "Sam", bgColor: "#b58900"},
    {content: "9:30am", event: "Holley", bgColor: "#cb4b16"},
    {content: "10:30am", event: "Nick", bgColor: "#d33682"}

  ];

  $scope.list.forEach(function(item){
    $scope.data.$add({'content':item.content, 'event':item.event, 'bgColor':item.bgColor});
  });
}

1 个答案:

答案 0 :(得分:1)

将if($ scope.total == 0){...}块移动到ref.once(' value',function(snapshot){..},它可以工作。问题是因为我的代码没有等待来自firebase的回调。希望这有助于某人。