2013-01-01 27 views
6

prima di tutto, buon anno.
Ma il lavoro deve continuare! ;)AngularJS - Ottieni dati per ID

Ho la seguente situazione:
Ho ottenuto un indicatore personalizzato e una mappa statica (non di Google). I display (e filtro) il marcatore con questo codice:

<div ng-controller="DealerDetailsListCtrl"> 
    <a ng-click="showdetails=!showdetails" href="#/dealer/{{marker.id}}" class="marker" style="left:{{marker.left}};top:{{marker.top}}" ng-repeat="marker in dealer|zipFilter:zipCodeLookup:countryLookup"></a> 
</div> 

ho instradamento fino al "banco-details.html" dove visualizzo con successo l'ID:

<div class="alldealermodal" ng-controller="DealerDetailsCtrl">  
    <div ng-view></div> 
    </div> 

con questo controller/routing :

app.config(['$routeProvider', function($routeProvider) { 
    $routeProvider. 
     when('/dealer/:id', {templateUrl: 'files/tpl/dealer-details.html', controller: DealerDetailsCtrl}). 
     otherwise({redirectTo: '/'}); 
}]); 

e

function DealerDetailsCtrl($scope, $routeParams) { 
    $scope.id = $routeParams.id; 
} 

Dato che sono molto nuovo in AngularJS mi piacerebbe sapere, come posso ottenere tutti i dati dall'ID.

Il mio file JSON è simile al seguente:

[ 
{ 
    "id": "2", 

    "name": "Laden Dortmund", 
    "strasse": "Unionstr.", 
    "hausnr": 1, 
    "plz": "45525", 
    "stadt": "Dortmund", 
    "land": "DE", 
    "url": "http://www.google.de", 
    "tel": "0234-234568", 
    "email": "[email protected]", 
    "left": "200px", 
    "top": "300px", 
    "lowRange":60000, 
    "highRange":70000 
}, 
{ 
    "id": "1", 
    "name": "Laden Unna", 
    "strasse": "Berlinerstr.", 
    "hausnr": 134, 
    "plz": "78654", 
    "stadt": "Unna", 
    "land": "AT", 
    "url": "http://www.bing.de", 
    "tel": "0234-11223344", 
    "email": "[email protected]", 
    "left": "250px", 
    "top": "500px", 
    "lowRange":40000, 
    "highRange":50000 
} 
] 

e così via .... e vorrei ottenere tutti i dati dalla id prescelto. Come lo posso fare? Qualcuno darebbe un suggerimento?

Io uso questo controller per ottenere tutti i dati dal JSON:

function DealerListCtrl($scope, $http) { 
    $scope.dealer = []; 
    $http.get('files/js/dealer.json').success(function(data) { 
    $scope.dealerall = data; 
    }); 
    $scope.orderProp = 'id'; 
} 

Grazie mille!

+0

Basta ripetere l'array in una funzione e restituire l'oggetto con l'ID corretto? –

risposta

4

Prima di tutto, non è necessario impostare ng-controller="DealerDetailsCtrl" in dealer-details.html, perché ng-view si prenderà cura di questo.

In secondo luogo, è necessario fornire un service di recuperare i dati:

var app = angular.module('myApp', []); 

app.factory('dealerService', function($http) { 
    return { 
     getDealerList function() { 
     var dealers = { 
      list : [] 
     }; 
     // TODO add possible caching via $cacheFactory 
     $http.get('files/js/dealer.json').success(function(data) { 
      dealers.list = data; 
     }); 
     return dealers; 
     }, 

     // other functions 
    }; 

}); 

Nei vostri controller, in cui è necessario accedere ai concessionari, basta iniettare DealerService, come si farebbe con un altro servizio. Per recuperare una determinata voce, basta ripetere.

Un'altra possibilità è utilizzare la proprietà resolve su $routeProvider per inviare i dati del rivenditore al DetailController.

+0

Non funziona, sto facendo qualcosa di sbagliato? Ottenere l'errore: ncaught SyntaxError: Funzione di token inaspettato riga 5 – Marek123

+0

Funziona, a: mancava. Grazie! – Marek123

+0

Trovato un altro problema (mi dispiace, molto nuovo per angularjs) ... è corretto? http://pastebin.com/gTHs0vNy - mi dà questo errore: ReferenceError: i rivenditori non sono definiti – Marek123