2016-08-17 45 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