Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角火相当于$setPristine?_Angularjs_Firebase_Angularfire - Fatal编程技术网

Angularjs 角火相当于$setPristine?

Angularjs 角火相当于$setPristine?,angularjs,firebase,angularfire,Angularjs,Firebase,Angularfire,我正在尝试理解使用Firebase数据创建$setPristine等价物的正确工作流 我的工作流程如下: 1通过Angularfire生成器“SyncData”创建Firebase对象 2表单数据修改$firebase对象 3要更新远程模型,我使用myRef.$save 所有这些都很有效。现在,我试图在表单上添加一个重置按钮,以便本地修改的数据将恢复为远程存储的数据 到目前为止,我遇到了一些问题。我已经尝试过重新初始化firebase引用,例如myRef=syncData'/my/path',但

我正在尝试理解使用Firebase数据创建$setPristine等价物的正确工作流

我的工作流程如下:

1通过Angularfire生成器“SyncData”创建Firebase对象

2表单数据修改$firebase对象

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

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

到目前为止,我遇到了一些问题。我已经尝试过重新初始化firebase引用,例如myRef=syncData'/my/path',但这不仅现在起作用,而且正在破坏远程数据对象


重新提取远程数据以用于角度模型的正确方法是什么?

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

在四处搜索之后,我发现了以下帖子:

这让我从@Kato找到了一段过时的代码片段2个月lol XD:

我将其修改为与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);

你能简单地将脏的本地数据存储在一个单独的对象中吗?然后,当调用reset时,是否再次从$firebase对象更新?angularFire更改事件可以帮助您同步这两个事件。单独复制数据元素是非常乏味的。但肯定有某种方法可以重新初始化远程数据结构。@BrianABird-如果使用angular.copy或angular.Extendal进行复制会怎么样?请记住,如果使用$bind,并且范围变量已经存在,如果本地值(如空对象)为,已存在,已推送到服务器。@MikePugh.copy解决了问题!谢谢