gpt4 book ai didi

javascript - Firebase.ServerValue.TIMESTAMP 在 View 中显示为 {".sv":"timestamp"} with .push()

转载 作者:行者123 更新时间:2023-11-29 18:05:56 26 4
gpt4 key购买 nike

我的 Controller 中有以下功能:

  $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> -&nbsp;&nbsp;{{item.date | date:'d MMM yy'}}</small></span><br>
<span ng-if="item.text"><small>{{item.text}}</small></span>
</p>
</div>

但是在点击提交按钮后,该项目被保存到 firebase 数据库中,它在屏幕上显示为:

{".sv":"timestamp"}

在我完全刷新页面后,它会显示带有正确时间戳的项目。有没有办法避免这种情况?我可以避免使用 $firebaseArray 来解决这个问题吗?

我使用的是 bower,它已经降低了以下版本:

  • AngularFire 1.1.2
  • Firebase v2.2.7
  • AngularJS v1.4.1

最佳答案

来自quick glance有一个bug$firebaseObject 的工作中。很明显,它没有正确处理特殊对象 Firebase.ServerValue.TIMESTAMP 的值,该对象告诉服务器将时间戳放在服务器端。但是,当使用同步方法 $add 将相同对象添加到 $firebaseArray 时,情况并非如此。

也许我缺少 $firebaseObject 的某种 flush 方法,但我找不到它。

在任何情况下,您都应该使用 $firebaseArray,因为您的数据是 Array 类型。并且不要忘记根据 docs 使用 $add$save$remove

关于javascript - Firebase.ServerValue.TIMESTAMP 在 View 中显示为 {".sv":"timestamp"} with .push(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31256363/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com