我有一个模型列表,我使用以下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}">▲</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之后,仍然没有在UI中更新question.vote的值。我猜它与ng-repeat复制数组有关,因此修改新问题不会反过来修改范围内的问题。
我还尝试通过返回投票并使用此ng-click来更新内联范围:
<a href="#" ng-click="question.vote = vote(question, -1)" ng-class="{downvote: question.score == -1}">▼</a>