Firebase.ServerValue.TIMESTAMP 在视图中显示为 { ".sv" : "timestamp" } 和 .push()



在我的控制器中有以下函数:

  $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
  • 重火力点v2.2.7
  • AngularJS v1.4.1

从快速浏览有一个bug在$firebaseObject的工作。很明显,它没有正确处理一个特殊对象Firebase.ServerValue.TIMESTAMP的值,它告诉服务器将时间戳放在服务器端上。但是,当使用同步方法$add$firebaseArray添加相同的对象时,情况就不是这样了。

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

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

相关内容

  • 没有找到相关文章

最新更新