【问题标题】:Angular Scope issue -> function comes off scope after one use?Angular Scope 问题-> 功能在一次使用后脱离作用域?
【发布时间】:2016-08-17 06:38:57
【问题描述】:

这里是相关的sn-p代码:

  $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; });
    }
  }

我在 html 中使用 ng-click="vote(sock.id, newLike, updateLike)" 或 ng-click="vote(sock.id, newDisike, updateDislike) 将此函数称为 $scope.vote " 是否在喜欢与不喜欢按钮上。调用按钮在第一次喜欢和更新时工作正常,一旦有一个特定的独特袜子/用户组合的“喜欢”实例,但在一次“更新”后我收到错误:

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

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

编辑:呃!来晚了,谢谢解答!

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    您将$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
    

    在 promise 解决后记录您的结果(在 then 块中),以了解新分配的值是什么。

    【讨论】:

      【解决方案2】:

      这很正常,这里:$scope.vote = update 你使用与函数名称相同的变量

      【讨论】:

        【解决方案3】:

        问题一定出在以下语句:

        $scope.vote = vote;
        

        vote 可能不起作用,所以v2.vote is not a function

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-10-28
          • 1970-01-01
          • 2018-04-18
          • 2015-06-24
          • 1970-01-01
          • 2013-07-24
          • 2021-11-10
          • 1970-01-01
          相关资源
          最近更新 更多