2014-12-16 1 views
-1

저는 각도가 새롭고 필터에 문제가 있습니다. 이 같은 두 개의 서로 다른 파일 JSON 있습니다두 개의 파일 json을 사용하여 Angularjs 필터 만들기

[ 
     { 
      "IdPers": "1067", 
      "CognNome": "JANE SMITH", 
      "Sex": "F" 

     }, 
     { 
      "IdPers": "1093", 
      "CognNome": "JOHN SMITH", 
      "Sex": "M" 

     } 

     ] 

과 : 나는 작업 Plunker 넣어 [

 { 
      "IdPers": "1067", 
      "DescRuol": "Membro" 
     }, 
     { 
      "IdPers": "163", 
      "DescRuol": "Membro" 
     } 
     ] 

: I 필드와 필터를 만들 필요가 http://plnkr.co/edit/1xkyxRallRGtj83fSteg?p=preview

을 "DescRuol을 "파일"OutCommissioni.json "에있는 두 파일의 필드"id "가 같습니다. 나는 내가 조인처럼 할 수 있다고 생각했지만 작동하는 것을 만들 수 없다! 어떤 도움 주셔서 감사합니다

+0

인가

다음, 오히려 필터에 직접 "filter"개체를 사용하는 것보다, 당신이 당신의 필터 객체에서 필요한 값을 포함하는 새로운 객체를 제공 이것은 가능한 대안인가? 두 파일을 하나의 파일로 다시 작성할 수 있습니까? – inoabrian

답변

0

편집 :이 대답을 무시하십시오 - 나는 질문을 오해. 이 답변의 의견에서 OP가 실제로 원했던 작업을 완료 한 후 최종 답변과 함께 제출 된 새로운 답변입니다.

각 파일에서 데이터를 가져온 후에는 관련 필드를 일반 속성에 할당하고 두 데이터 집합을 단일 배열에 추가하여 속성의 차이를 표준화합니다.

var App = angular.module('App', []); 
App.controller("OutAnCtrl", function ($http, $scope) { 

    $scope.data = []; 

    $http.get('OutAnagrafica.json') 
     .success(function (data) { 
      data.forEach(function(item) { 
       item.name = item.CognNome; 
      }); 
      $scope.data.push.apply($scope.data, data); 
     }); 

    $http.get('OutCommissioni.json') 
     .success(function (data) { 
      data.forEach(function(item) { 
      item.name = item.DescRuol; 
      }); 
      $scope.data.push.apply($scope.data, data); 
     }); 

    $scope.clearBox = function() { 
     $scope.filter = ""; 
    }; 

}); 

마지막으로 병합 된 데이터 개체 "데이터"와 공용 속성 이름을 사용하도록 리피터를 변경하십시오.

<tr data-ng-repeat="Person in data|filter:filter"> 
    <td>{{Person.IdPers}}</td> 
    <td>{{Person.name}}</td> 
    <td>{{Person.Sex}}</td> 
</tr> 

업데이트 예 : http://plnkr.co/edit/03rwNY7eLX9i9VCTHz7Z?p=preview

편집 : 나는 아마 잘못-이해하고 당신은 아마 이러한 속성 병합이 필요하지 않습니다. 핵심 부분은

// Create initial array 
$scope.data = []; 

// Append some arrays 
$scope.data.push.apply($scope.data, [1,2,3]); 
$scope.data.push.apply($scope.data, [4,5,6]); 

// $scope.data will now contain [1,2,3,4,5,6] 

편집을 Array.push.apply

를 사용하여 하나의 배열에 두 배열을 추가하는 것입니다 : 나는 이것이 당신이 찾고있는 무슨 생각? http://plnkr.co/edit/jvyXlpv2iBh2n4pZ1miv?p=preview

<label for="DescRuol">DescRuol:</label> 
<select data-ng-options="item.IdPers as item.DescRuol for item in OutCommissioni" id="DescRuol" data-ng-model="filter.IdPers" class="form-control input-sm"></select> 
+0

답장을 보내 주셔서 감사합니다. 어쩌면 설명 할 수 없지만 "DescRuol"필드가있는 필터를 사용하고 "membro"를 선택하면 Jane Smith와 동일한 ID를 갖기 때문에 필터가됩니다. 나도 몰라 너 이해한다면, 내 영어로 미안해! – sidos

+0

편집 : 난에서 "독특한"필터를 사용하여 UI-utils를위한 옵션의 중복을 삭제하지만 난 [ { "IdPers": "163", "DescRuol": "프레지던트" }이있을 때, 을 { "IdPers": "163", "DescRuol": "Membro" } 하나의 DescRuol를 필터링 때문에 ] 필터가 잘 작동하지 않습니다. 고유 한 문제가 무엇입니까 ?? 필터를 잘 작동시키는 방법이 있습니까? – sidos

+0

아 좋아요. 나는 지금 당신의 문제를 이해한다고 생각합니다. 고유하지 않은 값을 가진 드롭 다운 선택 상자를 활성화하려고하는 것 같습니다. 그렇다면 단순히 그렇게하는 것이 타당하지 않습니다. –

0

미래의 독자들을 위해, 내 다른 대답을 무시하세요 - 제가 질문을 잘못은-이해하고 거기에 코멘트에 영업 이익 세부 사항을했다.

<select data-ng-options="item as item.DescRuol for item in OutCommissioni" id="DescRuol" data-ng-model="filter.IdPers" class="form-control input-sm"></select> 

"대신 직접 개체를 참조 -

가 같은 값을 사용하여 여러 옵션이 선택 상자를하려면 먼저 선택 상자가 사용할 직접 값으로 ID를 사용하지 않는 것입니다 item as item.DescRuol "은 id 값이 아닌 객체 자체를 모델 값으로 사용합니다. 여기

<tr data-ng-repeat="Person in OutAnagrafica|filter:{Sex:filter.Sex,IdPers:filter.IdPers.IdPers}"> 

근무 예 : http://plnkr.co/edit/gMvuNny99b8aV66C8GAw?p=preview

관련 문제