我有一个社交媒体图标,只有当item.like== 1
item.userid==0
或profileData ()
时不会突出显示(将为白色)时才启用(变为红色)按钮。我正在动态地执行此操作。因此,当为特定用户单击时,我需要再次调用函数<div class="showIcons" ng-repeat="item in pData">
<a title="Liked">
<img ng-click="unLikeUser(item.userid);" ng-if="(item.like ==1)" class="styleright" src="assets/images/like.png"></a>
<a title ="Like">
<img ng-click="likeUser(item.userid);" ng-if="(item.like ==0)" class="styleright otherlike" src="assets/images/like1.png"></a>
</div>
。在这种情况下,它就像整个页面闪烁加载不好看的数据。我不想调用配置文件数据,而是需要解决方案,所以只有那个特定的数据单独刷新或变成了。我尝试使用ng-show = true和ng-show = false,但是inturn使所有用户图标为true和false。
HTML:
$scope.proifleData = function(){
$scope.pdata = res.response.data;
};
JS:
$scope.likeUser= function(like){
var json = {
"request": {
"service": {
"servicetype": "9",
"functiontype": "9000",
"session_id": $cookieStore.get('sessionid')
},
"data": {
"like": [
like
],
"addorremove": 1
}
}
}
UserService.getSocialMedia(json).then(function (res) {
$scope.profileData(); });
};
likeuser()
for differentUser(与addorremove相同的函数:0)
$scope.pData = [
[
{
"profileInfo": {
"firstname": "shruthi",
"lastname": "p",
"like": 1,
}
}
],
[
{
"profileInfo": {
"firstname": "talentnew",
"lastname": "new",
"like": 0,
}
}
],
[
{
"profileInfo": {
"firstname": "jay",
"lastname": "sree",
"like": 0,
}
}
],
[
{
"profileInfo": {
"firstname": "ja",
"lastname": "sr",
"like": 1,
}
}
],
[
{
"count": 84
}
]
]
JSON:
expect
答案 0 :(得分:0)
如果我理解您的问题,那么我相信您在用户点击按钮时调用profileData()
时会遇到问题。
不要调用profileData()
函数从服务器获取值只使用它来保存服务器的值并仅使用前端处理视图,这样你就不会再次profileData()
函数
为每个数组元素分配一个唯一的id,并尝试将这些函数用于like和不同的
$scope.unLikeUser = function(id){
angular.forEach(item, function(item){
if (id == item.id) {
item.like = 0;
}
})
}
$scope.likeUser = function(id){
angular.forEach(item, function(item){
if (id == item.id) {
item.like = 1;
}
})
}
答案 1 :(得分:0)
当用户按下时将整个项目对象放入您的控制器。
查看
ng-click="likeUser(item)"
控制器
$scope.likeUser = function(item) {
var itemCopy = angular.copy(itme); // get a deep copy
}
你也可以为不喜欢的事件做同样的事情。希望这对你有所帮助。