我正在使用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
答案 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
});