사용자가 검색을 수행 할 수있게 해주는 이오니아 응용 프로그램이 있습니다. 검색 결과를 서비스에 저장하고 해당 페이지를 다시 방문하면 해당 서비스의 결과가 사용자는 검색 결과를 지우고 검색을 다시 시작할 수있는 결과 페이지로 리디렉션되어야합니다.이오 닉 패스 어레이 서비스
현재 코드는 결과 페이지에 데이터를 표시하지만 클릭 재설정을 클릭해도 아무런 변화가 없는데 내 API에서 결과를 $ 상태로 직접 전달하므로 서비스는 생략하지만 그대로 사용합니다. $ 상태로 전달하면서 데이터를 서비스에 저장합니다.
의사 코드 ***
내 주입 컨트롤러 종속성
.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 메소드를 호출하지 않았고 방금 참조를 전달했습니다. 해야합니다 : serviceName.getSearch(). –
사과 @CoryGlanton 내가 가지고있는 것을 기본 설정으로 보여주는 코드를 간소화하고 잘랐다. –
죄송합니다 - 너무 빨리 입력했습니다. 위의 편집을 참조하십시오. –