AngularFire相当于$ setPristine?

时间:2014-04-06 21:35:45

标签: angularjs firebase angularfire

我正在尝试了解使用我的Firebase数据创建$ setPristine等效项的正确工作流程。

我的工作流程如下:

1)创建Firebase对象(通过Angularfire Generator'SyncData')

2)表单数据修改$ firebase对象。

3)要更新远程模型,我使用myRef.$save()

所有这些都很有效。现在,我正在尝试在表单上添加“重置”按钮,以便本地修改的数据将恢复为远程存储的数据。

到目前为止,我遇到了问题。我已经尝试重新初始化firebase引用,例如myRef = syncData('/my/path'),但现在不仅可以使用它,而且它正在破坏远程数据对象!

重新提取要在我的Angular模型中使用的远程数据的正确方法是什么?

1 个答案:

答案 0 :(得分:-1)

我知道这是一个老问题,但我自己也遇到了这个问题。

经过一番搜索,我发现了这篇文章:http://grokbase.com/t/gg/firebase-angular/1499haaq4j/editing-data-as-a-copy

导致我从@Kato获得过时的代码片段(2个月lol XD):https://gist.github.com/katowulf/8eaa39eab05a4d975cd9

我修改了它以使用Firebase 2.3.1和AngularFire 1.1.3:

app.factory('ResetFactory', function($firebaseArray) {
    return $firebaseArray.$extend({
        reset: function(itemOrIndex) {
            var key, self;
            self = this;
            key = self.$keyAt(itemOrIndex);
            self.$ref().child(key).once('value', function(snap) {
               self.$$updated(snap);
            });
        }
    });
});

可以通过以下方式调用:

var comments = new RevertFactory(ref.child('comments'));

# variable comment is for example an ng-repeat that's being edited
comments.reset(comment);
相关问题