在AngularFire中如何跟踪数据是“飞行中”?

时间:2016-01-09 09:52:36

标签: angularjs firebase angularfire

我正在使用firebase和angular聊天应用程序。当我使用[<Literal>] let q1 = "SELECT * FROM ITEM WHERE ORGID1 = @org1 AND ASUTPID = @asutp" [<Literal>] let q2 = " AND PARENTAUTOINCID = @parent" let f a = match a with | 1 -> q1 + q2 | _ -> q1 [<Literal>] let q3 = f() 函数发送消息时,由于angularfire的三向绑定,它直接转向$scope.send(message)数组。它最初存储在本地,并在后台与服务器同步。如果它与服务器同步,我想保持跟踪消息的状态。 AngularFire的$scope.messages方法在与服务器同步时具有回调功能。但我不知道如何跟踪数据是“飞行中”(未与服务器同步但添加在角$push变量中。)

scope

1 个答案:

答案 0 :(得分:1)

$firebaseArray对象不涉及任何三向数据绑定。这仅限于$firebaseObject s .bindTo()方法。

致电$add()时会发生什么情况,即立即引发本地child_added事件,$firebaseArray根据该事件更新其内部数据。这就是所有Firebase客户端的工作方式,而不仅仅是AngularFire,这也是Firebase即时运行的部分原因。

如果您想知道在服务器上添加项目的时间,您可以使用$add()返回的承诺。当该承诺解决后,数据已在服务器上提交。

来自AngularFire documentation for $add()

  

此方法返回一个在数据保存到服务器后解析的promise。

var list = $firebaseArray(ref);
list.$add({ foo: "bar" }).then(function(ref) {
  var id = ref.key();
  console.log("added record with id " + id);
  list.$indexFor(id); // returns location in the array
});