2016-08-17 33 views
0

这里是代码中的相关片段:角度范围问题 - >功能在一次使用后出现范围?

$scope.newLike = LikeFactory.newLike; 
    $scope.newDislike = LikeFactory.newDislike; 
    $scope.updateLike = LikeFactory.updateLike; 
    $scope.updateDislike = LikeFactory.updateDislike; 

    $scope.vote = function(sockId, nnew, update) { 
    if (!$scope.verifyUser) $scope.alert("Please log in to like a sock!"); 

    if (!$scope.like.like && !$scope.like.dislike) { 
     return nnew(sockId).then(function(vote) { $scope.vote = vote; }); 
    } else { 
     return update(sockId).then(function(update) { $scope.vote = update; }); 
    } 
    } 

我调用这个函数,$ scope.vote,在与该HTML NG点击= “投票(sock.id,newLike,updateLike)” 或NG “--click =”投票(sock.id,newDisike,updateDislike)“是否在一个喜欢与不喜欢的按钮。呼叫按钮正常工作第一的喜好和更新一次,当有一个“喜欢”的实例为特定的独特袜子/用户组合,但一个“更新”后,我得到的错误:

angular.js:13642 TypeError: v2.vote is not a function 

我需要触发一个$摘要的函数继续在$范围内?它在使用后会以某种方式脱离$ scope吗?这对我来说似乎是一个奇怪的错误。

编辑:杜!已经很晚了,谢谢你的回答!

回答

1

这是正常的,在这里:$scope.vote = update您使用相同的varaible的函数名

2

您定义$scope.vote作为控制器的功能。第一次调用后您分配可能不是这个变量的函数的结果,从而vote不再是一个功能:

$scope.vote = function() {} // => 'vote' variable is holding a function 

$scope.vote = vote/update // => 'vote' might not reference a function but a value 

登录你的结果的承诺得到解决后(在then块),明白了什么是新的分配值。

1

问题必须与下面的语句:

$scope.vote = vote; 

vote可能不是功能等v2.vote is not a function