Проблема с угловым прицелом -> функция выходит за рамки одного использования?

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-click = "vote (sock.id, newLike, updateLike)" или ng-click = "vote (sock.id, newDisike, updateDislike)" на похожая против нелюбимая кнопка. Кнопка вызова работает отлично, когда сначала нравится и обновляется, когда есть экземпляр "как" для конкретной уникальной комбинации носок/пользователя, но после одного "обновления" я получаю ошибку:

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

Нужно ли мне запускать $ digest для продолжения функции в $ scope? Сможет ли это как-то отказаться от $ scope после использования? Мне кажется странной ошибкой.

Редактировать: duh! Поздно, спасибо за ответы!

Теги:

3 ответа

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

1

Это нормально, здесь: $scope.vote = update вы используете тот же varaible, что имя функции

Ещё вопросы

Сообщество Overcoder
Наверх
Меню