2016-05-14 133 views
1

我的嵌套狀態,解析和瀏覽器後退按鈕的時間很糟糕。 在我的狀態配置下面,它包含一個抽象狀態和兩個子狀態,一個用於查看配置文件, 一個用於保留它。通常的流程是打開配置文件頁面,然後點擊某個鏈接並打開請求頁面;這工作正常。但是,如果我點擊配置文件請求頁面上的瀏覽器後退按鈕,ProfileViewController已執行,但profileData未解析。 有沒有辦法重新加載之前的視圖(不必再次渲染)或強制執行控制器之前的承諾解析?嵌套狀態的角度路由器和後退按鈕

$stateProvider 
    .state('public', { 
    abstract: true, 
    templateUrl: 'app/public.html' 
}) 
.state('public.profile-view', { 
    url: '/profile/:slug', 
    templateUrl: 'app/profile/profile.view.html', 
    controller: 'ProfileViewController', 
    controllerAs : 'vm', 
    resolve: { 
     profileData: function($stateParams, Profiles) { 
     return Profiles.query({ slug: $stateParams.slug }); 
     } 
    } 
}) 
.state('public.profile-request', { 
    url: '/profile/request/:slug', 
    templateUrl: 'app/profile/profile.request.html', 
    controllerAs: 'vm', 
    controller: 'ProfileRequestController', 
    resolve: { 
     profileData: function($stateParams, Profiles) { 
     return Profiles.query({ slug: $stateParams.slug }); 
     } 
    } 
}) 

回答

0

您是否嘗試過在配置文件中緩存profileData,然後在ProfileViewController中嘗試獲取已存在的緩存數據。

另一種選擇是將profileData存儲在$ rootScope中。