我有一个Ionic应用程序,它允许用户执行搜索,我将搜索结果保存到服务中,并且如果该页面被再次访问,并且服务中存在结果用户应该被重定向到用户可以单击以清除结果重新搜索的结果页面。离子传递阵列服务
我目前的代码显示结果页面上的数据,但点击重置单击时,它什么都不做,我直接从我的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我已简化并切碎了代码,以显示我所拥有的基本设置。 –
对不起 - 我按下输入太快。看到我上面的编辑。 –