, как указано в комментариях, вам нужно иметь LikeStatus для каждого элемента в newsFeed, чтобы правильно отслеживать, чтобы вы могли делать следующее:
<div class="posts" ng-repeat="s in newsFeeds">
{{s.message}}
<div ng-if="s.likeStatus === 1">
<div class="liked">
<a ng-click="unlikePost(s)">liked</a>
</div>
</div>
<div ng-if="s.likeStatus === 0">
<div class="like">
<a ng-click="likePost(s)">like</a>
</div>
</div>
</div>
и ваш контроллер, как:
$scope.likePost = function (item) {
var data = 'id=' + item.id + "&userid=" + item.userid;
$http({
method: 'POST',
url: "like",
data: data,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).then(function successCallback(rs, status, headers, config) {
if (rs.data.st === 1) {
item.likeStatus = 1;
} else if (rs.data.st === 0) {
console.log("error or something");
}
}, function errorCallback(data, status, header, config) {
alert("Opps unable to connect to server");
}
);
};
То же самое вы должны изменить в отличие от метода, чтобы использовать объект newsFeed.Таким образом, у вас будет отслеживание для каждого элемента и одного твердого объекта вместо нескольких.
Также еще один совет по перемещению служебного вызова с контроллера на угловой сервис для лучшей возможности сопровождения.