web-dev-qa-db-fra.com

Ui-Router $ state.go () n'actualise pas les données

J'ai un état de liste de produits et un état de modification/ajout de produit dans mon Angular app.

Les données de la liste de produits sont chargées dans le contrôleur (je ne pensais pas avoir besoin de résolution pour être définies dans l'état de configuration), ce qui permet d'obtenir les données d'un ngResource:

function InventoryListCtrl (myResource) {
  var vm = this;

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

Sur Edit Controller, après avoir édité un produit, je retourne à l'état de liste suivant:

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

Il ne charge pas toujours la liste avec les nouvelles données, il affiche les anciennes données lors de la première exécution en général, puis après la deuxième mise à jour et le retour manuel à l'état de liste, il commence à s'actualiser après chaque mise à jour.

J'ai essayé ça, mais ça n'a pas marché non plus:

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

Qu'est-ce que je rate?

37
Bogac

Je pense que vous chargez le nouvel état avant la fin de la mise à jour - essayez de déplacer la transition d'état sur après la fin de la mise à jour:

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

je pense que cela devrait fonctionner pour l'actualisation de l'état actuel.

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

J'ai eu le même problème avec une liste qui ne rafraîchit pas après la modification. Envelopper le $ state.go dans une fonction $ timeout a résolu mon problème.

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