2016-10-21 7 views
0

Я новый ионный, и я заинтересован в том, чтобы отобразить детали моего списка данных. Я получаю, чтобы отображать все элементы моего JSON, но я не могу детализировать. моя функция «GetPromo» превратит меня в «null». Как я могу получить «идентификатор» элемента «Отель» в моем JSON? Не могли бы вы помочь мне ? СпасибоИонные каркасные главные детали не работают с вложенными json

var app = angular.module('hotelsApp.controllers', []) 

// My factory 
app.factory("PromoService", function(){ 
    var promos = [ 
    { 
     "Hotel":{ 
     "id":"52", 
     "typeEtablissement":"HOTEL", 
     "nomHotel":"AUBERGE DES ILES", 
     "email":"[email protected]", 
     "siteWeb":null, 
     "situationGeo":"Assinie", 
     "nombreChambre":"12", 
     "commune_id":"21", 
     "standing_id":"4", 
     "prixChambreMin":"5000", 
     "prixChambreMax":"15000", 
     "tarif":"5 000 \/ 15 000", 
     "description":"L'auberge des \u00eeles est un lieu paisible et reposant situ\u00e9 \u00e0 Assinie. Un cadre tout aussi propice \u00e0 l'\u00e9vasion et au loisir, vous accueille pour des s\u00e9jours \u00e0 court moyen et long terme.", 
     "typePaiement":"", 
     "autreinfo":"", 
     "logo":"\/img\/hotels\/52\/logo.jpg", 
     }, 
     "Commune":{ 
     "id":"21", 
     "libelle":"Assinie" 
     }, 
     "Standing":{ 
     "id":"4", 
     "nbEtoiles":"2", 
     "libelle":"2 Etoiles" 
     }, 
     "Service":[ 
     { 
      "id":"6", 
      "libelle":"Bar", 
      "Servicehotel":{ 
       "id":"1360", 
       "hotel_id":"52", 
       "service_id":"6" 
      } 
     } 
     ] 
    } 
]; 

return { 
    GetPromos: function(){ 
     return promos; 
    }, 
    GetPromo: function(promoId){ 
     for(var j = 0; j < promos.length; j++) { 
     if (promos[j].id === parseInt(promoId)) { 
      return promos[j]; 
     } 
     } 
     return null; 
    } 
} 
}); 


// My controllers 
app.controller('PromosCtrl', function($scope, PromoService) { 
    $scope.promos = PromoService.GetPromos(); 
}); 

app.controller('PromoCtrl', function($scope, $stateParams, PromoService) { 
    promoId = $stateParams.promoId; 
    $scope.promos[Hotel] = PromoService.GetPromo(promoId); 
}); 

ответ

0

1) Предполагая, что ваш hotel Id является promo Id, вы можете получить доступ к ид отель с promos[j].Hotel.id.

2) hotel id в вашем json - это строка, и, таким образом, компаратор будет неправильно оценивать, если вы parseIntpromoId. Это приведет к '52' === 52, который оценивает значение false.

Подводя итог,

GetPromo: function(promoId) { 
    for (var j = 0; j < promos.length; j++) { 
    if (promos[j].Hotel.id === promoId) { 
     return promos[j]; 
    } 
    } 
    return null; 
}