2015-12-24 2 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:

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

Смежные вопросы