私は、ユーザが検索を実行できるようにするIonicアプリケーションを持っています。検索結果をサービスに保存します。そのページが再び訪問され、その前にユーザーは検索結果をクリアして検索を再開できる結果ページにリダイレクトする必要があります。サービスへのイオニックパスアレイ
私の現在のコードは結果ページのデータを表示しますが、クリックをリセットしても何もしない場合、私のAPIから結果を$状態に直接渡していますので、サービスをバイパスしますが、 $ stateに渡すと、データもサービスに保存されます。
擬似コード***
私の注入されたコントローラの依存関係
.controller('SearchCtrl', function($scope, $http, $state, $ionicLoading, $ionicHistory, serviceName) {
if(serviceName.searchHistory){
$state.go('app.searchResults', {items: {items: serviceName.getSearch}});
} else {
$scope.beginSearch = function() {
$http.post('https://domain/api/v1/search?token=' + localStorage.getItem("token"),$scope.search).then(function(successResponse){
$scope.return = successResponse;
$scope.searchResponse = $scope.return.data.data[0];
serviceName.setSearch($scope.searchResponse.items);
$state.go('app.searchResults', {items: {items: $scope.searchResponse.items}});
});
}
}
})
私のサービス
angular.module('starter.services', [])
.factory('serviceName', function() {
var searchHistory = [];
return {
getSearch: function(){
return searchHistory;
},
setSearch: function(data){
var searchHistory = data;
},
clearSearch: function(){
searchHistory = [];
}
}
})
マイ結果コントローラ
.controller('resultsCtrl', function($scope, $http, $state, $ionicLoading, $stateParams, $ionicPopup, serviceName) {
$scope.item = $stateParams.items.items;
$scope.data = {};
$scope.resetFilter = function(){
serviceName.clearSearch();
$state.go('app.beginSearch');
}
})
これは実際のコードか擬似コードですか?実際にgetSearchメソッドを呼び出すのではなく、単に参照を渡しただけです。サービス名.getSearch()。 –
謝罪@CoryGlanton私は合理化し、私が持っているものの基本的な設定を示すためにコードを細かくした。 –
申し訳ありません - 私はあまりにも速く入力を押しました。上記の私の編集を参照してください。 –