javascript - 防止 Firebase 刷新时重置变量值

标签 javascript firebase

我在 JavaScript 中创建了一个简单的 click 事件,当单击按钮时,变量 i 会添加 150 的值。然后我将其发送到 firebase。但是,当我刷新索引页面并再次单击按钮时,Firebase 中的值会再次在 0 处重新启动。

我需要更改哪些代码?

var myDataRef = new Firebase('https://***.firebaseIO.com');
var i = 0;

$('.btn').click(function() {
   i = i + 150;
   myDataRef.set({value: i});
});

$('.progress-bar').css({ 'width' : i});

$(document).ready(main);

最佳答案

当前,您在页面加载时将 i 初始化为 0。

您还应该从 Firebase 获取值,您可以使用以下方法:

myDataRef.child('value').once('value', function(snapshot) {
    i = snapshot.val();
});

如果将其与现有代码结合起来并稍微清理一下,它就会变成:

var myDataRef = new Firebase('https://***.firebaseIO.com');

var i = 0;
$('.progress-bar').css({ 'width' : i});  

myDataRef.child('value').on('value', function(snapshot) {
    i = snapshot.val();
    $('.progress-bar').css({ 'width' : i});
});

$('.btn').click(function() {
   myDataRef.set({value: i + 150});
});

$(document).ready(main);

请注意,我给出的初始代码段使用 once('value'),而这里我们使用 on('value'。这意味着最新的代码实际上会继续监听从 Firebase 获取更新的值,这通常是您想要的。

所以这里的初始流程是:

  1. i 初始化为 0 并绘制进度条
  2. 您开始监听来自 Firebase 的值
  3. 您开始监听点击事件
  4. 在某个时刻,Firebase 会发出一个新值,
  5. 更新i和进度条

然后当用户单击按钮时:

  • 您更新 Firebase 中的值,这会触发上述步骤 4 和 5

关于javascript - 防止 Firebase 刷新时重置变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27564810/

相关文章:

javascript - 选项选择onchange

javascript - 对对象数组内的数组进行排序

javascript - ajax响应后无法遍历对象

数据之间的 Firebase 连接

firebase - 确定身份验证中的用户是否具有 firebase 管理员角色

firebase - 如何将 Firebase 数据导入欧盟的 Bigquery 数据集?

javascript - 动态选择框在js中动态添加和删除其选项

javascript - 如何使用 javascript 检索 cookie 的过期日期

无需登录即可部署 Firebase

swift - 使用 queryOrderedByChild 获取最高分数列表时,如何以正确的顺序显示并列分数?