Angularjs Firebase和非法调用

Angularjs Firebase和非法调用,angularjs,google-chrome,firebase,runtime-error,Angularjs,Google Chrome,Firebase,Runtime Error,有人知道我为什么会在这段代码中出现非法调用错误吗?我想这是因为我试图将一个配置文件图像注入到我获取的对象中——在addedCard.image=userInfo.image但我不知道如何修复它。因为它是firebase侦听器的一部分,所以它是一个连续的错误循环,并且它们不断累积。这是我的代码: 我的服务: service.cardAdded = function(cb){ // if(target === "all"){ if($rootScope.val

有人知道我为什么会在这段代码中出现非法调用错误吗?我想这是因为我试图将一个配置文件图像注入到我获取的对象中——在
addedCard.image=userInfo.image但我不知道如何修复它。因为它是firebase侦听器的一部分,所以它是一个连续的错误循环,并且它们不断累积。这是我的代码:

我的服务:

service.cardAdded = function(cb){
        // if(target === "all"){
            if($rootScope.validID){
            prayersRef.orderByChild("group").equalTo($localStorage.seedUser.id).on('child_added', function(snapshot){
                var val = snapshot.val();

                cb.call(this, {
                    to: val.to,
                    from: val.from,
                    date: val.date,
                    assigned: val.assigned,
                    group: val.group,
                    passage: val.passage,
                    id: snapshot.key()
                });
            });
        }
};
我的控制器:

myService.cardAdded(function(addedCard){
        $scope.card.push(addedCard);
          ProfileService.retrieveName(addedCard.assigned,function(userInfo) {
            if (userInfo.image) {
              addedCard.image = userInfo.image;  //I think that this is causing the error
            };
          });
      });
这就是错误:

TypeError: Illegal invocation
at isArrayLike (angular.js:266)
at forEach (angular.js:322)
at copy (angular.js:832)
at copy (angular.js:798)
at copy (angular.js:838)
at copy (angular.js:798)
at copy (angular.js:820)
at copy (angular.js:790)
at copy (angular.js:838)
at copy (angular.js:798)
(anonymous function) @ angular.js:11706
(anonymous     function) @ angular.js:8619
(anonymous function) @ angular.js:16417
completeOutstandingRequest @ angular.js:4940
(anonymous function) @ angular.js:5328

任何帮助都将不胜感激。谢谢

AngularJS提供的指导可能会很有用:

从JS代码中执行较低级别的DOM操作。。。对AngularJS来说不是不

如果您坚持操作数据模型angular.copy,它将很好地工作

您的代码隐式调用angular.copy(您可以在Chrome错误中看到这一点),因此请确保您只复制数据模型,而不是整个DOM元素

您是否尝试过只将需要的元素从userInfo.image分配到addedCard.image,而不是像这样复制整个对象

addCard.image = new Card(userInfo.image);

function AddCard(userImage) {
  var obj = {     
    // Assign the needed attributes
  };
  return obj; 
}

我得到了整个卡显示,但在这个过程中只得到图像添加到卡(显示用户所有权)…我不太明白他们在你提供的链接说什么;有什么指导吗?我已经编辑了上面的答案,提供了更多的细节。如果有帮助,请告诉我。我一定错过了什么……这不是我正在做的吗??很抱歉,我很难看到差异。差异是Angular复制addCard.image时包含的所有内容。赋值“addedCard.image=userInfo.image;”将userInfo.image对象中的所有内容复制到addedCard.image对象中。我不知道该对象中包含什么,但如果有DOM属性,则可能导致Angular抛出您看到的错误。(你能使用Chrome JavaScript调试器查看addedCard.info的属性吗?)你如何解决这个问题