2017-07-18 12 views
0

スコープにJSONを保存する際に問題があります。スコープにJSONを保存する関数があり、完全には機能しますが、2番目のメソッドは保存されません...JSONはスコープに保存されませんAngularJS

servicoLeituraPosts.phpは servicoLeituraComments.phpは、スコープ上のデータ

両方が正しくURLからJSONを送信

、最初のショーのデータをJSONを返すデータをJSONを返しますが、もう一つはせず、それが最初のものとまったく同じように行われています私は何が起こっているのか理解していません。

JSONを$ scope.postsに保存します。データがあり、印刷できます 2番目に$ scope.commentsにJSONが保存されていますが、それは空白ですか?どうして?ありがとう、私はAngularJSの初心者です。解決策を見つけた

<script> 
    var app = angular.module('postsApp', []); 
    var interval; 

    app.controller('postsCtrl', function($scope) { 
     $scope.toggle = false; 
     $scope.texto = []; 
     $scope.comment = []; 
     $scope.comment = ""; 
     $scope.comments = []; 
     $scope.posts = []; 
     $scope.texto = ""; 
     $scope.idPost = 0; 
     $scope.showBox = function(p){ 

      p.toggle = !p.toggle; 


      if(interval == 0){    
      interval = setInterval("angular.element($('#postsApp')).scope().servicoLeituraPosts()",1000); 
      }else{ 
      clearInterval(interval); 
      interval = 0; 
      } 

      $scope.servicoLeituraComments(p); 

      console.log($scope.comments); 
      console.log($scope.posts); 

     }; 
     $scope.iniciaTimer = function(){ 
       interval = setInterval("angular.element($('#postsApp')).scope().servicoLeituraPosts()",1000);   
     }; 
     $scope.servicoLeituraPosts = function(){   
       $.getJSON(
         "servicoLeituraPosts.php", 
         { 

         }, 
         function(jsonData) 
         { 
          $scope.posts = jsonData; 
          $scope.$apply(); 
         }); 
     }; 
     $scope.servicoLeituraComments = function(p){   
       $.getJSON(
         "servicoLeituraComments.php", 
         { 
          "idPost": p.idPost 
         }, 
         function(jsonData) 
         { 
          $scope.comments = jsonData;       
          $scope.$apply(); 
         }); 

         console.log($scope.comments); 
     }; 
     $scope.addPost = function(){        
       $.post(
        "addPostRest.php", 
        { 
         "texto" : $scope.texto 
        }, 
        function(dados) 
        { 
         $scope.texto = dados.indexOf("OK") >= 0 ? "" : "FALHOU"; 
         $scope.$apply(); 
        } 
       ); 
     }; 
     $scope.addLike = function(idPost){ 
       $.post(
        "addLike.php", 
        { 
         "idPost" : $scope.idPost = idPost 
        }, 
        function(dados) 
        { 
         $scope.texto = dados.indexOf("OK") >= 0 ? "" : "FALHOU"; 
         $scope.$apply(); 
        } 
       ); 
      }; 
      $scope.addComment = function(p){        
       $.post(
        "addComentarioRest.php", 
        { 

         "comment" : p.comment, 
         "idPost" : p.idPost 
        }, 
        function(dados) 
        { 
         $scope.texto = dados.indexOf("OK") >= 0 ? "" : "FALHOU"; 
         $scope.$apply(); 
        } 
       ); 
      };  

    }); 
</script> 

答えて

0

、明らかに同期$.getJSON(...)を呼び出すのではなく、待機した後にJSONがデータ

+0

部分的信用? :) –

0

あなたがconsole.log($scope.comments);を呼び出しているように見えますがない無効にPOSTで受け取ったパラメータに問題がありましたjsonDataが返されます。この時点で$ scopeはまだ更新されていません。

コールバックにconsole.logを移動してみてください:

function(jsonData) 
{ 
    $scope.comments = jsonData;       
    $scope.$apply(); 

    console.log($scope.comments); 
}); 
関連する問題