Ui-路由器$state.go()不刷新数据

Ui-Router $state.go() does not refresh data

我的 Angular 应用程序中有产品列表状态和产品 Edit/Add 状态。

产品列表数据被加载到控制器中(我认为我不需要在状态配置中定义 resolve),它从 ngResource 获取数据:

function InventoryListCtrl (myResource) {
  var vm = this;

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

在 Edit Controller 上,在我编辑产品后,我回到列表状态,如下所示:

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

它不会总是用新数据加载列表,它通常首先显示旧数据 运行,然后在我进行第二次更新并手动返回列表状态后,它会在每次更新后开始刷新。

我已经试过了,但也没有用:

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

我错过了什么?

我认为您正在更新完成之前加载新状态 - 尝试将状态转换移动到更新完成之后:

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

我认为这应该适用于当前状态刷新。

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

我遇到了同样的问题,列表在编辑后没有刷新。将 $state.go 包装在 $timeout 函数中解决了我的问题。

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