1

作为练习,我正在向基本的 angularFire 聊天应用程序添加电子邮件身份验证,如http://angularfire.com/tutorial/所示。在这个过程中,我注意到通过伪造删除第一个条目,一个未定义的条目出现在 DOM 中,该条目曾经是 0 条目。

当我删除第二个(id 1)条目时,由于以下错误消息没有显示任何内容: 不允许在转发器中重复。中继器:消息中的消息键:未定义:未定义

我注意到教程中出现了第一个未定义的代码,但不是第二个......直到我将 .firebaseio-demo.com url 替换为我的 firebase 的那个。这让我相信这不是我对代码的实现。

我想念的 .firebaseio-demo.com 的烟雾和镜子背后是什么?是否有神秘的验证规则或什么?

在某些时候,angularjs.org 上的 Wire up a Backend 示例遇到了同样的问题。最近它似乎已得到纠正。

4

1 回答 1

0

我看到了同样的事情,这对我来说感觉像是一个错误(从伪造的数组中删除的项目不应该出现在angularFire客户端的绑定模型数组中)。当使用对象集合而不是数组时,这种效果也不会发生,例如,当使用angularFireCollection或将原始messages类型设置为对象时:$scope.messages = {}而不是$scope.messages = [].

但是,由于那些已删除的项目在结果数组undefined显示为,因此在您的数组中包含多个undefined会导致 AngularJS 转发器具有相同的值,这是不允许的。因此,您在删除多条消息后看到的错误实际上是预期的。

无论如何,就目前而言,避免它的最好方法似乎是使用对象集合而不是上面提到的数组,或者设置某种 Angularfilter来清除undefined中继器的任何成员。

于 2013-10-25T14:27:43.010 回答