Javascript Firebase.ServerValue.TIMESTAMP在视图中显示为带有.push()的{quot;.sv";:“TIMESTAMP";}
我的控制器中有以下功能:Javascript Firebase.ServerValue.TIMESTAMP在视图中显示为带有.push()的{quot;.sv";:“TIMESTAMP";},javascript,angularjs,firebase,angularfire,Javascript,Angularjs,Firebase,Angularfire,我的控制器中有以下功能: $scope.add = function(newItem){ if (!(newItem.title && newItem.text)) return; var sanitized = { title: newItem.title, text: newItem.text, date: Firebase.ServerValue.TIMESTAMP, }; // $rootScope.
$scope.add = function(newItem){
if (!(newItem.title && newItem.text)) return;
var sanitized = {
title: newItem.title,
text: newItem.text,
date: Firebase.ServerValue.TIMESTAMP,
};
// $rootScope.currentUser is here bound with $firebaseObject(ref).$bindTo($rootScope, 'currentUser').
$rootScope.currentUser.list.push(sanitized);
// .list is an array: [].
};
在我看来,我利用这一点如下:
<form name="newUp">
<input ng-model="newItem.title">
<textarea ng-model="newItem.text"></textarea>
<button ng-click="add(newItem)">Submit</button>
</form>
<div ng-repeat="item in currentUser.list | orderBy:'-date'">
<p>
<span><a href="">{{item.title}}</a> <small> - {{item.date | date:'d MMM yy'}}</small></span><br>
<span ng-if="item.text"><small>{{item.text}}</small></span>
</p>
</div>
提交
-{{item.date | date:'d MMM yy'}}
{{item.text}
但是,单击“提交”按钮并将项目保存到firebase数据库后,它在屏幕上显示为:
{.sv:“时间戳”}
在我完全刷新页面后,它会显示具有正确时间戳的项。有没有办法避免这种情况?我可以避免使用$firebaseArray来修复此问题吗
我使用的是bower,它已经下载了以下版本:
- 角火1.1.2
- Firebase v2.2.7
- AngularJS v1.4.1
$firebaseObject
正在工作。很明显,它没有正确处理一个特殊对象的值Firebase.ServerValue.TIMESTAMP
,该对象告诉服务器将时间戳放在服务器端。但是,使用同步方法将同一对象添加到$firebaseArray
中时,情况并非如此
也许我缺少了$firebaseObject
的某种flush
方法,但我找不到它
在任何情况下,您都应该使用
$firebaseArray
,因为您的数据属于Array
类型。不要忘记使用$add
、$save
和$remove
,根据您使用的Firebase客户端库/Angular库的哪个版本?我已经将这些版本添加到了问题中,很好。一切都是最新的,除了angular(出于某种原因bower不会降低1.4.2),这有关系吗?谢谢。这回答了这个问题,因为它a)澄清了我没有做错什么,&b)我一直试图避免动态构建特定的引用,但我认为这是一个糟糕的模式,因此遵循链接的文档是很自然的事情。