2017-01-17 1 views
0

J'essaie de placer les données d'un autre tableau dans une partie du tableau. Mon premier JSON "noms":Données concat 2 de json Angular ng-repeat

[ 
     { 
      "name": "AAAAAA", 
      "down": "False" 

     }, 

     { 
      "name": "BBBBBB", 
      "down": "True" 
     }, 
     { 
      "name": "CCCCC", 
      "down": "False" 
     } 
] 

Second JSON "data":

[ 
     { 
      "data": "35%" 
     } 
] 

Javascript:

var app = angular.module('app', []); 
    app.service('service', function($http, $q){ 
     this.getNames = function() { 
      var names = $http.get('names.json', {cache: false}); 
      var datas = $http.get('data.json', {cache: false}); 
      return $q.all({datas,names}); 
     }; 

     }); 
    app.controller('FirstCtrl', function($scope, service, $http) { 
      var promise = service.getNames(); 
      promise.then(function (data) { 
       $scope.names = data.names.data; 
       $scope.datas = data.datas.data; 
       $scope.namesanddata = $scope.names.concat($scope.datas); 

       console.log($scope.namesplit); 
       console.log($scope.datas); 

      }); 
    }); 

Tableau HTML:

div ng-controller="FirstCtrl" 
    <table> 
     <tbody> 
      <tr ng-repeat="name in namesanddata"> 
      <td>{{name.name}}</td> 
      <td ng-if="name.down=== 'False'">{{name.down}}</td> 
      <td ng-if="name.down !== 'False'">{{name.data}}</td> 
      </tr> 
     </tbody> 
     </table> 
    </div> 

Mon problème - <td ng-if="name.down !== 'False'">{{name.data}}</td> ne montre pas dans la table. dans console.log il concat à tableau comme objet 4 et probablement par ce qu'il ne montre pas dans la table à côté de {{name.name}}, mais je ne sais pas comment afficher {{name.data}} d'un autre json dans la table à la place {{name.down}}. Merci pour les réponses en avance.

+0

Est-ce 'data' ou' datas'? –

+0

données dans les données json. Je concat les données aux noms puis j'ai 4 objets dans les noms où le quatrième est {"data": "35%} - les données dans les données @PritamBanerjee – bafix2203

+0

" data "est le pluriel, le singulier est" datum ", mais peu importe. –

Répondre

1

Pour vous donner une sortie de:

AAAAAA False 
BBBBBB 35% 
CCCCC False 

Retirez cette ligne du contrôleur:

$scope.namesanddata = $scope.names.concat($scope.datas); 

alors:

Solution 1 - ligne dans la vue

Modifier vos ng-repeat comme suit:

<tr ng-repeat="name in names"> 
    <td>{{ name.name }}</td> 
    <td>{{ (name.down === 'False') ? name.down : datas[0].data }}</td> 
</tr> 

OU

Solution 2 - Gardez la vue propre à l'aide d'un filtre

app.filter('myFilter', function() { 
    return function(items, datas) { 
     var filtered = []; 
     angular.forEach(items, function (i) { 
      if (i.down !== "False") 
       i.down = datas[0].data; 
      filtered.push(i); 
     }); 
     return filtered; 
    } 
}); 

Changer votre ng-repeat comme suit:

<tr ng-repeat="name in names | myFilter: datas"> 
    <td>{{ name.name }}</td> 
    <td>{{ name.down }}</td> 
</tr>