update/refresh angularjs ng-repeat with data from server

北战南征 提交于 2019-12-12 02:23:34

问题


I try to buil a website to like some pictures.

I can load the picture, but I want to have a like system with who like the picture.

my problem was I have to refresh the page to see who like this picture and increment the count.

this my controller :

$scope.loadingpics = function (){
        $http.get('/api/photos')
        .success(function(awesomeThings) {

          console.log(awesomeThings);
          $scope.firstname = awesomeThings;
          })
          .error(function (err){
              $scope.errors.other = err.message;
            });
         };
$scope.upVote = function(index){
         $scope.vote = 1;
         var ref = index;
         var nom = index.url.substr(30, 40);
         var num = index.vote + 1;

         $http.put('api/photos/' + nom, {
          email: email, 
          vote: num
          })
         .success(function (data) {
              $scope.firstname = data;
              $scope.loadingpics();
          })          
          .error(function (err){
            $scope.errors.other = err.message;
          });
      };

this is my view :

  <li ng-repeat="image in firstname | orderBy: 'firstname'"  ng-show="isLoggedIn()" class="thumbnail" title="Image 1" on-last-repeat>                                   
<img  ng-src="../assets/images/Pouce.png" ng-click="upVote(image)" data-toggle="popover" data-content="And here's some amazing content. It's very engaging. Right?" data-placement="right" title="Popover title">
            </li>

this is my schema :

var PhotoSchema = new Schema({
  url: String,
  firstname: String,
  email: [String],      
  info: String,
  vote: Number,
  active: Boolean
});

Thanks for your help :D


回答1:


Instead of storing only the number of likes in your schema, store an array of object :

 var PhotoSchema = new Schema({
  url: String,
  firstname: String,
  email: [String],
  info: String,
  vote: [{
    date: Date,
    user: String
  }],
  active: Boolean
});



回答2:


I just change my upVote function by adding a $scope.watch and $scope apply.

This is my example :

$scope.upVote = function(index){
         $scope.vote = 1;
         var ref = index;
         var nom = index.url.substr(30, 40);
         console.log(nom);
         console.log(index.vote);
         var num = index.vote + 1;
         console.log(index);
         $http.put('api/photos/' + nom, {
          email: email, 
          })
         .success(function (data) {
          $scope.firstname = data;            
          })          
          .error(function (err){
            $scope.errors.other = err.message;
          });
           $scope.$watch($scope.firstname, $scope.loadingpics());
           $scope.apply();
  };


来源:https://stackoverflow.com/questions/30258534/update-refresh-angularjs-ng-repeat-with-data-from-server

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!