2016-10-21 4 views
0

Ich bin neu ionische und mein Anliegen ist es, die Details meiner Datenliste anzuzeigen. Ich kann alle Elemente meines JSON anzeigen, aber ich kann nicht für die Details. Meine Funktion "GetPromo" macht mich "null". Wie bekomme ich die "id" des Elements "Hotel" in meinem JSON? Kannst du mir helfen ? DankeIonic Framework Master-Details funktionieren nicht mit verschachtelten 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); 
}); 

Antwort

0

1) Unter der Annahme, dass Ihr hotel Id ist promo Id, können Sie das Hotel-ID mit promos[j].Hotel.id zugreifen.

2) Die hotel id in Ihrem JSON ist eine Zeichenfolge und somit der Komparator wird falsch ausgewertet, wenn Sie parseInt Ihre promoId. Es wird '52' === 52 ergeben, was zu false führt.

Um es zusammenzufassen,

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