2017-02-19 19 views
2

У меня есть значки социальных сетей, в которых я включаю (поворачивает красный цвет), как кнопка, только если мой item.like== 1 или он не будет подсвечен (будет белого цвета), когда item.userid==0 , Я делаю это динамически. Мне нужно снова вызвать функцию profileData(), когда щелкните понравившуюся кнопку для определенного пользователя. в этом случае это похоже на то, что вся страница мерцает, чтобы загрузить данные, которые не выглядят хорошо. Я не хочу вызывать данные профиля, вместо этого Нужно решение, чтобы только одни конкретные данные обновлялись или превращались в. Я пробовал использовать ng-show = true и ng-show = false, но inturn делает все значки пользователей истинными и ложными.Передача ng-repeat и ng-if для динамических данных с сервера

HTML:

<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> 

JS:

$scope.proifleData = function(){ 
    $scope.pdata = res.response.data; 
}; 

likeuser()

для unlikeUser (такую ​​же функцию с addorremove: 0)

$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();    }); 
    }; 

JSON:

$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 
    } 
    ] 
] 
+0

Я не могу понять это »или он не будет подсвечен, когда item.userid == 0. Я делаю это динамически. Мне нужно снова вызвать функцию profileData(), когда мне нравится пользователь."? –

+0

Считаете ли вы, что этот вопрос имеет смысл? что вы пытаетесь передать .. сделать его значимым – Aravind

ответ

0

Если я понимаю вашу проблему, то я считаю, что у вас есть проблема с вызовом profileData(), когда пользователь нажимает на кнопку.

Не вызывайте функцию profileData(), чтобы получить значение с сервера, используйте ее только для сохранения значения для сервера и просмотра ручек с использованием только интерфейса, чтобы вы снова и снова не возвращали profileData().

Назначить уникальный идентификатор для каждого элемента массива и попытаться использовать эти функции для, как и в отличие,

   $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; 
         } 
        }) 
       } 
+0

thats, что мой вопрос тоже. Я не хочу вызывать данные профиля. Каким может быть альтернативное решение? –

+0

@NicoletaWilskon теперь проверит его –

0

Когда пользователь нажимает кнопку, как получить весь объект элемента в контроллер.

Посмотреть

ng-click="likeUser(item)" 

Контроллер

  • Получить глубокую копию объекта (пункт itemCopy)
  • объекта Использование itemCopy для увеличения как кол в первую очередь. этот не обновит представление.
  • Используйте этот объект вместо объекта объекта, если вы планируете использовать объект объект в запросе сервера.
  • После этого отправить запрос как счетчик обновления на сервер, то есть запроса успеха
  • Затем увеличивают как подсчет внутри объекта элемента, который передается в качестве параметра.Это обновит конкретного пользователя, как кол в зрения, потому что вы используете тот же объект ссылки

$scope.likeUser = function(item) { 
 
    var itemCopy = angular.copy(itme); // get a deep copy 
 
}

Вы могли бы сделать то же самое для случая нелюбовь тоже. Надеюсь, это поможет вам.