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的属性吗?)你如何解决这个问题