有一家工厂
httpFactory.factory('setRating', function($http){
return{
Like: function(id){
return $http.get('http://localhost:51265/Film/Like/' + id);
}
}
});
在控制器中
$scope.thisLike = function(id){
setRating.Like(id).then((response) => {
$('.rating-count').text(response.data);
})
}
这似乎很正常并且可以正常工作。 但是我对这个元素类的绑定感到困惑。 我想以这种方式使用它
<button
class="fa fa-thumbs-up like"
ng-click="rating=thisLike(film.FilmId);"></button>
<div>
<span ng-class="{'low-rating':rating < 0}"
class="rating-count">{{ rating }}</span>
</div>
<button
class="fa fa-thumbs-down dislike"
ng-click="rating=thisDisLike(film.FilmId)"></button>
即,在标记中初始化局部变量并将其分配给返回该方法的变量。 但问题是我琐碎无法回归正确的意思。
我试过了
$scope.thisLike = function(id){
let v = 0;
setRating.Like(id).then((response) => {
v = response.data;
})
return v;
}
但该方法立即返回,不要等到我得到该值。 问题是如何推迟回报,直到我从承诺中得到意义。 我得到0
答案 0 :(得分:1)
首先,为什么你在那里使用jQuery?没有jquery需要!
“但该方法立即返回”
这是正确的行为,您的Promise(http调用)是异步的。
所以你可能想要的是:
$scope.rating = 0
$scope.thisLike = function(id){
setRating.Like(id).then((response) => {
$scope.rating = response.data;
})
}