2017-01-17 1 views
0

다른 배열의 데이터를 테이블의 한 부분에 넣으 려합니다. 내 첫 JSON "이름"json의 concat 2 데이터 Angular ng-repeat

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

     }, 

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

둘째 JSON "데이터"

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

자바 스크립트 : HTML에서

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

      }); 
    }); 

테이블 :

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> 

내 문제 - <td ng-if="name.down !== 'False'">{{name.data}}</td>은 표에 나타나지 않습니다. console.log에서 4 개의 객체와 같은 배열로 concat하고 아마 이것에 의해 {{name.name}} 옆의 테이블에 나타나지 않지만, 대신 {{name.down}}의 다른 json에서 {{name.data}}을 표시하는 방법을 모르겠습니다. 미리 답변 해 주셔서 감사합니다. 그런 다음

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

중 하나 : 컨트롤러에서이 줄을 제거

AAAAAA False 
BBBBBB 35% 
CCCCC False 

:

+0

그렇지 않아? '데이터'또는'데이터'? json 데이터의 –

+0

데이터 내가 네 이름에 연결된 데이터 네 번째 네 번째는 { "데이터": "35 %} - 데이터의 데이터 @ PritamBanerjee – bafix2203

+0

"데이터 "는 복수형입니다. 단수는"데이터 "이지만 무엇이든간에. –

답변

1

당신의 출력을 제공하려면

해결 방법 1 -보기에서 인라인을

변경하기,433,210는 다음과 같이

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

또는

해결 방법 2 - 깨끗하고보기를 유지를 필터를 사용하여 다음과 같이

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

ng-repeat 변경 :

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