Angular UI路由器在状态改变时重新加载数据

我正在使用Angular ui路由器(https://github.com/angular-ui/ui-router)并遇到意想不到的行为。

我有一个recordViewrecordEdit状态设置并使用sref / $ state.transitionTo在它们之间切换。

当处于recordEdit状态时,更新通过ajax完成,并且在成功时,我将编程状态变为recordView 。 问题是, recordView状态不显示更新数据,只有在刷新页面时才显示。

我尝试使用重新加载选项,但没有成功。

App.saveRecord($scope.formData).then(function (response) {  
                   $state.transitionTo('recordView', $stateParams, {
                       reload: true
                   });
}

我也尝试使用$state.go(...)但获得相同的结果。

我也尝试在state属性上使用cache = false ,但没有成功。

.state('recordView', {
            url: '/folder/:hash/:recordId',
            resolve: {},
            cache: false,
            templateUrl: function (urlattr) {
                //return the url
            }
        })

然后我试着明确地将window.location改为view url,但它仍然会显示以前的数据。 唯一的一次实际工作是如果我打电话给location.reload(); 在改变状态之后,但这对用户体验不利。

有谁知道为什么会发生这种情况? 我见过的所有帖子都提到将reload设置为true或将缓存设置为false。

更新每个评论我明白,问题是我正在使用ng-init和服务器端渲染来将数据从php注入角度,当重新加载视图时,此数据不会重新加载。 我的问题是:

  • 在用户编辑数据后,可以将编辑后的数据从recordEdit状态“注入”到recordView状态中吗?
  • 有没有办法简单地强制重新加载页面并忽略缓存? 基本上模仿,如果路线第一次被击中。
  • 谢谢。


    这是一个想法。 在你的路由文件中定义一个父抽象状态并用数据初始化它

    .state('parent.state'
      {
        abstract: true,
        data:{
          init://server rendered data here
        }
      }
    )
    .state('child.state.view',
      {
        // your route definition here
      }     
    )
    .state('child.state.edit',
      {
        // your route definition here
      }     
    )   
    

    然后在你的控制器中注入$ state服务在view controller中使用

    //assuming the data variable holds the needed data. change that to what ever
    $scope.data = $state.current.data.init; //if using $scope
    this.state = $state.current.data.init; //if controller As syntax
    

    由于数据将在控制器上初始化,因此删除ng-init语句。 然后在编辑视图中的Update函数中确保使用新数据更新$state.current.data.init 。 这样下一次你去那里时,控制器将从$ state对象中选择数据并获取更新的数据。


    回答:

    $templateCache.remove('http://urlthemplate');
    
    链接地址: http://www.djcxy.com/p/77947.html

    上一篇: Angular UI Router reload data on state change

    下一篇: AngularJS ui router passing data between states without URL