2015-12-24 34 views
1

我有兩個來自代表兩個不同類的API的列表。我想在一個通用列表中按照它們的屬性顯示這兩個列表,其中元素按日期排序。使用一個公共屬性排序兩個不同對象的列表

我需要分開兩個列表,因爲要顯示的禮貌是不同的,他們只共享日期。

我設法分開顯示這兩個列表,但不能合併這兩個......有沒有人有這樣的想法?非常感謝你。

這裏是.js文件和查看:

的.js:

function activityController($http) { 

    var vm = this; 

    vm.race= []; 
    vm.try= []; 

    vm.errorMessage = ""; 
    vm.isBusy = true; 

    $http.get("/api/race") 
    .then(function (response) { 
     //Sucess 
     angular.copy(response.data, vm.race); 

    }, function (error) { 
     //Failure 
     vm.errorMessage = "Failed to load the data" + error; 
    }) 

    $http.get("/api/try") 
     .then(function (response) { 
      //Sucess 
      angular.copy(response.data, vm.try); 
     }, function (error) { 
      //Failure 
      vm.errorMessage = "Failed to load the data" + error; 
     }) 

    .finally(function() { 
     vm.isBusy = false; 
    }); 


} 

查看:

<div class="col-md-offset-7"> 
<div class="text-danger" ng-show="vm.errorMessage">{{ vm.errorMessage}}</div> 
<wait-cursor ng-show="vm.isBusy"></wait-cursor> 


    <ul class="well" ng-repeat="activities in vm.race| orderBy: 'date':true"> 
     <li> {{activities.title}}</li> 
     <li>Date : {{activities.date | date :'dd-MM-yyyy'}}</li> 
     <li>Temps : {{activities.time}}</li> 

    </ul> 

    <ul class="well" ng-repeat="activities in vm.try| orderBy: 'date':true"> 
     <li> {{activities.person}}</li> 
     <li>Date : {{activities.date | date :'dd-MM-yyyy'}}</li> 
     <li>Temps : {{activities.type}}</li> 

    </ul> 

回答

1

我會做的方式是:

<ul class="well" ng-repeat="activities in vm.getRacesAndTrys()| orderBy: 'date':true"> 
    <li> {{activities.title}}</li> 
    <li>Date : {{activities.date | date :'dd-MM-yyyy'}}</li> 
    <li>Temps : {{activities.time}}</li> 
</ul> 

在你的虛擬機中使用一個函數:

vm.getRacesAndTrys = function() { 
    var result = []; 

    for (var i = 0; i < vm.try.length; i++) { 
     var item = vm.try[i]; 
     result.push({ 
      title: item.person, 
      date: item.date, 
      time: item.type 
     }); 
    } 

    for (var i = 0; i < vm.race.length; i++) { 
     result.push(vm.race[i]); 
    } 

    return result; 
} 

這將創建一個組合陣列,並轉換所有try對象,使他們的領域相匹配的race對象。

+0

感謝您的回答。是的,它的作品,但事實上,兩個對象的道具數量是相同的。未來將會有所不同。但無論如何,您的答案是我解決方案的開始。再次感謝。 – coufperenoel

相關問題