使用Firebase和Ace编辑器同步数据

使用Firebase和Ace编辑器同步数据,firebase,Firebase,在Firebase上观看了一个演示后,我跳了进来,并试图构思一个想法,即在同一个文档上进行协作。事实证明,他们已经以Firepad为例,但我仍然希望自己能够更好地理解Firebase的工作原理 使用jQuery和Ace编辑器,我能够创建新文档,但一旦开始集成Ace,我发现很难更新 但是我从firebase.js得到了一个错误 too many recursions 在Firebase Forge上更改数据会自动反映在我的页面上,但我似乎无法将更改推回到Firebase。你有什么想法吗 ---编

在Firebase上观看了一个演示后,我跳了进来,并试图构思一个想法,即在同一个文档上进行协作。事实证明,他们已经以Firepad为例,但我仍然希望自己能够更好地理解Firebase的工作原理

使用jQuery和Ace编辑器,我能够创建新文档,但一旦开始集成Ace,我发现很难更新

但是我从firebase.js得到了一个错误

too many recursions
在Firebase Forge上更改数据会自动反映在我的页面上,但我似乎无法将更改推回到Firebase。你有什么想法吗

---编辑---

下面是一个示例代码,可以更好地了解我正在进行的工作

var fileRef = new Firebase('https://user.firebaseio.com/document/body');

var editor = ace.edit("codepad");
editor.setTheme("ace/theme/monokai");
editor.getSession().setMode("ace/mode/php");

fileRef.on('value', function(snapshot){
    var file = snapshot.val();
    editor.setValue(snapshot.val());
});

editor.getSession().on('change', function(e) {
    fileRef.set(editor.getValue());
});

在完整代码中发布JSFIDLE或类似代码可能会帮助我们。如果我必须随机猜测,也许你进入了一个无限更新循环:ace更改,所以你将其保存到firebase,这使firebase更改,所以你将其保存到ace,这使ace更改,所以你将其保存到firebase,等等……谢谢Michael,这里有一些关于jsfiddle的信息。我将在上面更新我的帖子以反映这一代码。事实上,我们有同样的预感,问题是我该怎么写呢?我很难让一个简单的ace示例正常工作,因此无法测试您的代码。但要进行调试,我首先要设置断点或添加console.log语句,以查看snapshot.val()和editor.getValue()是什么。从理论上讲,如果您使用与已有值相同的值执行ref.set(),则不会得到任何事件,因此您应该/不应该/看到无限递归。。。但也许出于某种原因,这不起作用。作为一种常见的解决方法,您可以尝试使用“update=true”和“update=false”包装.set()调用,如果update=true,则不调用editor.setValue()。