2013-07-23 6 views
9

Ho una pagina che contiene una direttiva ng-repeat. Il ng-repeat funziona quando la pagina viene caricata per la prima volta, ma voglio essere in grado di utilizzare ng-click per aggiornare il contenuto di ng-repeat. Ho provato il seguente codice ma non funziona. Eventuali suggerimenti?Come posso utilizzare ng-clic per ricaricare dinamicamente i dati ng-repeat?

<div ng-click="loadItems('1')">Load 1st set of items</div> 
<div ng-click="loadItems('2')">Load 2nd set of items</div> 
... 

<table> 
    <tr ng-repeat="item in items">> 
     // stuff 
    </tr> 
</table> 

ItemsCtrl:

$scope.loadItems = function (setID) { 
    $http({ 
     url: 'get-items/'+setID, 
     method: "POST" 
    }) 
    .success(function (data, status, headers, config) { 
     $scope.items = data; 
    }) 
    .error(function (data, status, headers, config) { 
     $scope.status = status; 
    }); 
}; 

Speravo che la mia chiamata a loadItems() causerebbe la direttiva ng-repeat per ricaricare con i nuovi dati ottenuti dal mio server.

+1

il tuo codice sta entrando nella funzione di successo e ottieni l'array corretto dal server. Controlla i dati di rete nella scheda di rete chrome –

risposta

10

Aggiungere una trasmissione nella richiamata e iscriversi ad essa nel controller.

Questo in realtà dovrebbe essere in un servizio btw

itemsService.loadItems = function (setID) { 
    $http({ 
     url: 'get-items/'+setID, 
     method: "POST" 
    }) 
    .success(function (data, status, headers, config) { 
     $scope.items = data; 
     $rootScope.$broadcast('updateItems', data); 
    }) 
    .error(function (data, status, headers, config) { 
     $scope.status = status; 
    }); 
}; 

nel controller:

$scope.$on("updateItems",function(d){ 
    $scope.items = d; 
}); 

Così ogni volta che ng-click="update(id)"

$scope.update = function(id){ 
    itemsService.loadItems(id); 
} 

tuo items si aggiorna automaticamente perché è stato sottoscritto.

+1

Dove inserisco il '' itemsService.loadItems = '' blocco di codice? Va in un modulo? –

+0

@StephanieCaldwell È uno stile di dichiarazione di un oggetto in un servizio. Esaminare le funzioni di servizio. –

+0

Qualcuno può fornire jsfiddle o Demo funzionante per lo stesso? – Parth