Подтвердить что ты не робот

Ui-Router $state.go() не обновляет данные

У меня есть состояние "Список продуктов" и "Состояние редактирования/добавления продукта" в приложении Angular.

Данные списка товаров загружаются в контроллер (я не думал, что мне нужно разрешение для определения в конфигурации состояния), которое получает данные из ngResource:

function InventoryListCtrl (myResource) {
  var vm = this;

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

В редакторе Edit после того, как я отредактировал продукт, я возвращаюсь к списку, например:

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

Он не загружает список с новыми данными всегда, он показывает старые данные в первом прогоне в целом, а затем после второго обновления и вручную возвращаюсь в состояние списка, он начинает обновляться после каждого обновления.

Я пробовал это, но не работал:

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

Что мне не хватает?

4b9b3361

Ответ 1

Я думаю, что вы загружаете новое состояние до завершения обновления - попробуйте переместить переход состояния после завершения обновления:

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

Ответ 2

Я думаю, что это должно работать для обновления текущего состояния.

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

Ответ 3

У меня была такая же проблема, когда список не обновлялся после редактирования. Обертка $state.go в $timeout-функции решила мою проблему.

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

Ответ 4

Я думаю, что это был бы лучший подход

<a data-ui-sref="directory.organisations.details" data-ui-sref-opts="{reload: true}">Details State</a>

Мы можем перезагрузить состояние только из HTML.