我正在尝试了解使用我的Firebase数据创建$ setPristine等效项的正确工作流程。
我的工作流程如下:
1)创建Firebase对象(通过Angularfire Generator'SyncData')
2)表单数据修改$ firebase对象。
3)要更新远程模型,我使用myRef.$save()
所有这些都很有效。现在,我正在尝试在表单上添加“重置”按钮,以便本地修改的数据将恢复为远程存储的数据。
到目前为止,我遇到了问题。我已经尝试重新初始化firebase引用,例如myRef = syncData('/my/path')
,但现在不仅可以使用它,而且它正在破坏远程数据对象!
重新提取要在我的Angular模型中使用的远程数据的正确方法是什么?
答案 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);