2016-04-24 40 views
0

我一直在使用$ location服務進行角度轉換,嘗試將某些值傳遞給$ routeParams以根據多個條件過濾一組項目顏色,風格,類別等

我的API有一組過濾器,它可以操縱一組對象,其中一個是'IN',例如,如果我想API只返回藍色,紅色&綠色我可以做到以下幾點:

filter[]=product_colours,in,red,blue,green 

如果我想在他們的顏色只獲得一定的風格,我可以做

filter[]=product_colours,in,red,blue,green&filter[]=product_sub_category,in,Long,Short,Slim 

我已經把一個CodePen試圖原型我過濾的想法:

CodePen例如:http://codepen.io/sutsurikeru1986/pen/YqaeeO

我所試圖做的,但我有,正試圖問題維護傳遞給查詢字符串的值使用& location.search()在頁面刷新後保留並將這些值傳遞給$ routeParams,以便我的路由可以理解它 - 以及防止查詢字符串變爲:

?key=param1&key=param2&key=param3 

,而不是東西有點像吸塵器:

?key=param1-param2-param3 

任何幫助點我在正確的方向將不勝感激。

回答

0

當頁面刷新或關閉時,我使用此過程將狀態對象保存爲HTML5本地存儲。然後,當頁面重新加載時,我將重新加載控制器(或者工廠,如果您願意的話)。

// get the state object from local storage 
$scope.state = angular.fromJson(localStorage.getItem(id)); 

// make sure state is an object 
$scope.state = (angular.isObject($scope.state)) ? $scope.state : {}; 

// update your route params in the state object 
$scope.state.selectors = $routeParams.selectors; 

// when the page refreshes or is closed angular broadcasts a "$destroy" message 
$scope.$on("$destroy", function() { 

    // save the route to html5 local storage 
    localStorage.setItem("some_state_id", angular.toJson($scope.state)); 
}); 
+0

如果用戶沒有訪問某個查詢字符串組合,我不需要將它存儲在locaalstorage中,然後在控制器中使用它? –

+0

對於默認情況下,您可以使用angular.merge({},$ scope.state.selectors,default_selectors); 其中,default_selectors是一些帶有代表默認顏色的字段的對象。 – Porlune

相關問題