2015-02-10 14 views
36

Mam stan Lista produktów i Edycja produktu/Dodaj stan w mojej aplikacji Angular. Dane Lista

Produkt zostanie załadowany do sterownika (nie, że muszę rozwiązać zostać zdefiniowane w config państwowego), która pobiera dane z ngResource:

function InventoryListCtrl (myResource) { 
    var vm = this; 

    myResource.query(function (data) { 
    vm.products = data; 
    }); 
} 

Edit Controller, po tym, jak edytować Produkt wrócę do listy stan tak:

vm.product.$update().$promise; 
$state.go('productList'); 

nie załadować listę z nowymi danymi zawsze pokazuje stare dane w pierwszym biegu ogólnie, a po drugie zrobić aktualizację i ręcznie wrócić do listy stanu po każdej aktualizacji zaczyna się odświeżać.

Próbowałem to, ale nie działa albo:

vm.product.$update().$promise; 
$state.go('productList', {}, { reload: true }); 

Czego mi brakuje?

Odpowiedz

78

Myślę, że ładowanie nowego stanu przed aktualizacja została zakończona - spróbuj przenieść przejście do stanu po zakończeniu aktualizacji:

vm.product.$update().then(function(){ 
    $state.go('productList', {}, { reload: true }); 
}); 
+1

Błędem z mojej strony było napisanie obietnicy $ obietnej po metodzie ngResource. Twoja odpowiedź jest poprawna, w przeciwnym razie. Dzięki – Bogac

+0

Nie to, co OP zadawał, ale jest to coś, czego chciałbym się nauczyć wcześniej. Jeśli chcesz przeładować tylko stan podrzędny, musisz zmienić "reload: true", aby mieć nazwę stanu podrzędnego zamiast prawdziwego, jak pokazano tutaj: http://stackoverflow.com/questions/25316591/angularjs-ui-router-state -reload-child-state-only/31887658 # 31887658 –

+1

To nie działa na IE (wersja 11) – Jerome2606

13

myślę, że to powinno działać dla bieżącego odświeżania państwowej.

$state.go($state.current, {}, {reload: true}); //second parameter is for $stateParams 
+1

To powinna być zaakceptowana odpowiedź. Pracował dla mnie. –

+2

To również zadziałało dla mnie, opakowane wewnątrz ng-click, takie jak 'ng-click =" $ state.go ('dashboard', {}, {reload: true}) "' – tommymcdonald

3

Miałem ten sam problem z listą, która nie odświeżała się po edycji. Zawijanie pliku $ state.go w funkcji $ timeout rozwiązało mój problem.

$timeout(function(){ 
    $state.go('publishers.list', {}, { reload: true }); 
},200);