2016-05-26 29 views
1

我正在使用Angular Js UI路由器,當點擊按鈕時,我已經調用函數並接管PARAMS並調用服務並從Db獲得結果。運作良好。Angular ui -router頁面瀏覽器刷新顯示空值?如何保存數據?

在時間點。

當瀏覽器刷新頁面時,該值爲空並且響應獲得500錯誤。

它查看狀態配置路徑並轉到控制器,有空值。 如何在UI狀態提供程序中保存數據。

Url Look like : 
http://localhost/Myproject/#/home/Retailer/retailerId=1?retailerCode=3 

When I click the button i have carry over the value 
$state.go('Home.retailer', { 'retailerId': $scope.param1, 'retailercode': $scope.param1}); 



While refersh the page, the values getting null in module. 

.state('home.retailer', { 

     url: '/contract/:retailerId:9?retailercode:1', 
     params:{ 
        'retailerId': '9', 'retailercode': '1' 
     }, 
     views: { 
      '@': { 
       templateUrl: baseUrl + 'retailr/retailerList', 
       controller: 'home', 
      } 
     }, 
     data: { 
      Name: '', 
      Img: 'Images/1.png' 
     } 

    }) 

注: 當按鈕點擊我已經獲得的價值,因此服務將返回的數據。

問題: 當刷新頁面時,它進入模塊並檢查home.retailer,並返回到服務。刷新瀏覽器時如何保存數據。

正是這種能做些什麼:PARAMS:{ 'retailerId': '9', 'retailercode': '1' },

Because of null, response Here I am passing the retailer id and Retailer code in service inside the controller. 
`RetailerService.pageLoad($scope.retailerId,$scope.retailercode)` when Click the button , 
RetailerService.pageLoad($scope.retailerId :9 ,$scope.retailercode :1) , 



Page Refresh RetailerService.pageLoad($scope.retailerId : null,$scope.retailercode : null)` 
+1

我們需要控制器和數據庫的服務。此外,當你的狀態被命名爲** home時,你在** state.go('Home ...')中放置一個** H ** ** – Walfrat

+0

@Walfrat,這是示例代碼,問題出現在null在零售商ID':'9','零售商代碼':'1'時,我需要在瀏覽刷新頁面時保留數據 –

+0

當我們不知道'$ scope .param1' get是賦值的嗎?給我們一個完整的控制器,它和'$ state.go'一起使用 – Walfrat

回答

4

要堅持下去的刷新數據,您將需要將它存儲在瀏覽器存儲。以下是使用localStorage的工廠的一個很好的例子。

app.factory("storageFactory", function($window) { 
    return { 
    setData: function(val) { 
     $window.localStorage && $window.localStorage.setItem('my-storage', val); 
     return this; 
    }, 
    getData: function() { 
     return $window.localStorage && $window.localStorage.getItem('my-storage'); 
    } 
    }; 
}); 

所以,你會在你的控制器不同的時間設定數據,然後調用get在頁面加載數據,以確保任何預先設定瓦爾被捕獲。

編輯:如下所述,而不是localStorage,sessionStorage也是一個選項。你選擇什麼應該取決於你的需求。

+2

對此的一個評論是不使用本地存儲,而是使用會話存儲。本地會堅持會議和瀏覽器,這可能不是首選。會話將在瀏覽器關閉時破壞。另一個選項,如果你不想使用會話是設置一個工廠服務來存儲數據的範圍 – rlcrews

+0

是否有任何其他方式沒有存儲會話,cookie和本地存儲。我可以傳入參數並獲取服務中的值 –

+1

如果要以任何方式保留不屬於URI的數據,則需要本地存儲或會話,刷新=丟失所有javascript上下文。 – Walfrat

相關問題