2017-05-30 85 views
0

在我的角度應用程序中,有兩個頁面(列表&結帳)。在列表頁面中,用戶可以搜索項目並且將顯示搜索到的項目,然後用戶可以選擇項目並繼續結帳。
             在結帳頁面,用戶可以返回到列表頁面,並且在那個時候列表頁面中的所有項目應該與之前的項目相同。 爲了實現此功能,我的代碼是AngularJS - HTML綁定無法正常工作

從列表頁移動到結賬頁面,所有的範圍數據存儲在服務

returnsService.setScopeData($scope); 

而且從結帳頁面返回返回列表頁面,在此保存的數據從服務中檢索並分配給範圍變量。

var restoreScopeData = returnsService.getScopeData(); 
if (restoreScopeData) { 
     for (var key in restoreScopeData) { 
      if (key.charAt(0) != '$') { 
        $scope[key] = restoreScopeData[key]; 
       } 
     } 
    } 

這可以很好地擴展,我可以看到列表頁與我如何離開它相同。 但問題是,現在我無法在列表頁面中搜索新項目。

當發生搜索時,項目將填充到$scope.listSearch,並且它們顯示在html {{listSearch}}中。 在錯誤的情況下, 我可以看到新的搜索數據被分配到$scope.listSearch,但HTML綁定沒有發生。 我嘗試在搜索分配後撥打$scope.$apply(),但仍然無法工作。

回答

0

存儲完整範圍不是好主意。你可以儲存你需要的變量。此外,你可以使用localStorage來做到這一點。 據我所知,新的電話不是一個選項,所以你可以嘗試使用$超時。

$timeout(function() { 
    $scope.listSearch = myValue; 
}); 
+0

我覺得有些混亂。在範圍內有很多事情要回來時必須維持。回來之後,用戶仍然可以搜索另一個項目。那麼肯定需要一個新的調用,新的項目細節將被分配給$ scope.listSearch。但綁定沒有發生。 –

+0

你試過$超時了嗎? –

+0

是的..不起作用 –

0

而不是這樣做,你可以爲約翰所提供的localStorage或sessionStorage。 您可以點擊下面的鏈接,例如

https://www.codeproject.com/Articles/1015515/Working-With-Client-Side-Local-Storage 
+0

這有什麼區別嗎?存儲在服務中或本地存儲中... –