2017-04-12 44 views
1

我想通過表單搜索後找到我擁有的數據。 我檢索了一個用戶的ID,我可以訪問他的信息。點擊上一個按鈕後找到數據

我有一個函數用於搜索工作列表中的個人。

此功能如下,並在我的服務:

var searchUser = function(form){ 
    var formdata = new FormData(); 
    for (var key in form) { 
     console.log(key, form[key]); 
     formdata.append(key, form[key]); 
    } 
     return $http({ 
       method : 'POST', 
       url  : url + '/user/search', 
       data : formdata, 
       transformRequest: angular.indentity, 
      }).then(function(result) { 
       return result.data; 
     },function errorCallback(response) { 
       console.log(response); 
     }); 
}; 

我再有另一個功能在我的服務來檢索所選擇的用戶,並告訴我他的信息:

var userinfo = function(idUser){ 
    return $http({ 
      method : 'GET', 
      url  : url + '/user/' + idUser, 
     }).then(function(result) { 
     return result.data; 
    }); 
}; 

現在我通過使用這種功能的控制器恢復「idUser」:

var addObject = function(newObj) { 
element.push(newObj); 
}; 
var getObject = function(){ 
return element; 
}; 

完美的作品。

但關注的是,在這個頁面上,我有我的信息,我可以通過單擊鏈接訪問另一個頁面。 因此,通過做「以前」我失去了有關用戶的信息數據...應用程序沒有找到我以前的「idUser」參數.. 我在當天嘗試了幾件事情,但沒有任何工作..

<form ng-controller="listCtrl" id="app-form5" class="list" ng-submit="search()"> 
 
    <label class="item item-input" id="app-search1" style=""> 
 
    <i class="icon ion-search placeholder-icon"></i> 
 
    <input placeholder="Search" type="search" ng-model="form.fname"> 
 
    </label> 
 
    <a class="button button-positive button-block" ng-click="search()">Search</a> 
 
    <ion-list id="menu-list1"> 
 
    <ion-item ng-repeat="user in list track by $index" ng-click="showInfo(user.id)">{{ user.name }}</ion-item> 
 
    </ion-list> 
 
</form>

而且我的控制器:

.controller('listCtrl', function($scope, $stateParams, $state, appService) { 
    $scope.search = function() { 
    appService.searchUser($scope.form).then(function(response){ 
    console.log(response); 
    $scope.list = response; 
    }); 
}; 
$scope.showInfo = function(currObj){ 
    appService.addObject(currObj); 
    console.log(currObj); 
    $state.go('infoUser'); 
} 
}) 

.controller('infoCtrl', function($scope, $stateParams, appService) { 
    $scope.$on('$ionicView.beforeEnter', function (event, viewData) { 
    viewData.enableBack = true; 
    }); 
    $scope.info = appService.getObject(); 
    console.log($scope.info); 
    appService.userinfo($scope.info).then(function(response){ 
    $scope.userinfo = response; 
    console.log($scope.userinfo);   
    }); 
}) 

如果有人能指出我,我希望做的東西將是巨大的:)

謝謝!

回答

2
  • 您可以在「infoUser」模板中使用「cache:true」來保存按下上一個按鈕後的信息。
  • 然後您將添加「reload()」方法,以便在新搜索中清除緩存。

我將解釋原因: 當您執行搜索並選擇一個用戶時,您將收到用戶的信息。這些信息將被緩存,以便您在進入下一頁並「返回」後可以找到它們。 然後在您的控制器,你這樣做:

$scope.showInfo = function(currObj){ 
    appService.addObject(currObj); 
    console.log(currObj); 
    $state.reload('infoUser'); 
    $state.go('infoUser'); 
} 

,這將使你到一個新的搜索後,甚至選擇其他用戶後清空緩存。

它應該工作;)

+0

哦,這是偉大的!非常感謝:D – Lilith