Ui-Router $ state.go()不刷新数据

时间:2015-02-10 12:08:25

标签: angularjs angular-ui-router

我的Angular应用程序中有产品列表状态和产品编辑/添加状态。

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

function InventoryListCtrl (myResource) {
  var vm = this;

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

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

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

它始终没有用新数据加载列表,它通常在第一次运行时显示旧数据,然后在我进行第二次更新并手动返回列表状态后,它会在每次更新后开始刷新。

我已经尝试过这个,但也没有尝试:

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

我错过了什么?

3 个答案:

答案 0 :(得分:80)

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

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

答案 1 :(得分:14)

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

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

答案 2 :(得分:3)

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

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