【问题标题】:Firebase Database & AngularJS - Results on load after button click/actionFirebase 数据库和 AngularJS - 按钮单击/操作后加载的结果
【发布时间】:2016-12-20 21:13:46
【问题描述】:

我能够从我的 Firebase 数据库中检索数据,但直到我点击页面上的按钮或输入字段后,我的范围才会更新。我假设它与AngularJS有关,但我无法弄清楚。

这是我从 Firebase 读取数据的函数:

var userId = firebase.auth().currentUser.uid;

  database.ref('/users/' + userId).on('value', function(snapshot) {

    console.log(snapshot.val().user);
    console.log(snapshot.val().weight);
    console.log(snapshot.val().updated);

    $scope.displayName = snapshot.val().user;
  });

console.log 结果很好,scope.displayName 很好,但是范围本身不会更新,直到我单击一个按钮并且我希望它在页面加载时更新(只要database.ref 运行)。

绑定:

<p>{{displayName}}</p>

【问题讨论】:

  • 这是因为作用域在 .on() 函数内部。它在改变范围之前寻找值的变化。

标签: javascript angularjs firebase scope firebase-realtime-database


【解决方案1】:

在您的 HTML 代码中创建与“displayName”的双向绑定。这样它将显示初始值并随着值的变化而变化。

你的 HTML 是什么样的?

【讨论】:

  • 它已经使用

    {{displayName}}

    绑定了,但仍然只在单击按钮后显示任何值。
  • 您需要根据控制器中的 firebase id 设置 displayName。
【解决方案2】:

我能够使用 $scope.apply 解决此问题。

【讨论】:

    猜你喜欢
    • 2015-09-07
    • 2013-01-02
    • 1970-01-01
    • 2012-04-07
    • 2017-10-03
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多