1

我有一个使用以下 ng-click 指令渲染的模型列表:

<div id="pair" ng-repeat="question in session.questions | filter:{'answered':qfilter}">

在每个问题中,我都有一个投票按钮,它在点击时调用投票方法:

<a href="#" ng-click="vote(question, 1)" ng-class="{upvote: question.score == 1}">&#x25B2;</a><br/>

请注意,这个 ng-click 指令将问题变量传递给我的函数。

这是投票功能:

$scope.vote = function(question, val){
    $scope.apply(function(){
        if(question.vote == val){
            question.vote = 0;
        }else{
            question.vote = val;
        }
        $http({
            method: 'POST',
            url: question.resource_uri+"vote/",
            data: $.param({vote:question.vote}),
            headers: {'Content-Type': 'application/x-www-form-urlencoded'}
        });
    })
}

该函数调用正常,帖子提交成功。唯一的问题是,即使在运行 $scope.apply 之后,question.vote 的值仍然没有在 UI 中更新。我猜它与 ng-repeat 复制数组有关,因此修改新问题并不会反过来修改范围内的问题。

我还尝试通过返回投票并使用此 ng-click 来更新内联范围:

<a href="#" ng-click="question.vote = vote(question, -1)" ng-class="{downvote: question.score == -1}">&#x25BC;</a>
4

0 回答 0