如何在firebase中更新字典,同时还添加angularjs的时间戳?

时间:2014-08-10 14:11:41

标签: javascript angularjs dictionary firebase angularfire

以下代码更新列表中的firebase字典,并为该更新创建时间戳,但复杂的是我需要将firebase对象转换为html中的数组

JSFiddle:http://jsfiddle.net/chrisguzman/b84up41y/

这有效:

HTML

<section ng-app ="myapp" ng-controller="MyController">

<div ng-repeat= "(id,item) in data">
           <form ng-submit="AddComment(id)">
                <input ng-model="item.comment"></input>
            </form>
</div>

</section>

JAVASCRIPT

angular.module("myapp", ["firebase"])
    .controller('MyController',function MyController($scope, $firebase) {
    var ref = new Firebase("https://helloworldtest.firebaseio.com");

    $scope.data = $firebase(ref);
    $scope.AddComment = function (id) {
        $scope.data[id].DateLastModified = Date.now();
        $scope.data.$save(id)}


});

但是当我添加| orderByPriority将firebase对象转换为数组时,我可以应用过滤器

<form ng-submit="AddComment(id) |orderByPriority">

它不再有效

但是,当我删除以下内容时,它确实可以更新列表中的字典,这是我需要的组件。

$scope.data[id].DateLastModified = Date.now();

根据firebase

  

AngularFire提供orderByPriority过滤器,将$ firebase返回的对象转换为数组。数组中的对象按优先级排序(如Firebase中所定义)。此外,数组中的每个对象都将定义一个$ id属性,该属性将对应于该对象的键名。

然而,id似乎返回0而不是示例i show中的id

1 个答案:

答案 0 :(得分:1)

直接传递项目的id,如下所示:

<div ng-repeat= "item in data|orderByPriority">
           <form ng-submit="AddComment(item.$id)">
                <input ng-model="item.comment"></input>
            </form>
</div>

请注意,在ng-repeat我只在item中寻找data。这是一个有效的jsfiddle