我有一个使用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});
});
}
答案 0 :(得分:1)
将if($ scope.total == 0){...}块移动到ref.once(' value',function(snapshot){..},它可以工作。问题是因为我的代码没有等待来自firebase的回调。希望这有助于某人。