单击上一个按钮后查找数据

时间:2017-04-12 16:52:56

标签: javascript jquery angularjs arrays ajax

我希望在通过表单搜索后找到我的数据。 我检索用户的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);           
  }); 
})

如果有人能指出我要做的事,那就太好了。)

谢谢!

1 个答案:

答案 0 :(得分:2)

  • 您可以在“infoUser”模板中使用“cache:true”,以便在按下上一个按钮后保留信息。
  • 您将添加“reload()”方法,以便在新搜索中清除缓存。

我将解释原因: 当您进行搜索并选择用户时,您将收到用户的信息。此信息将被缓存,以便您在转到下一页并“返回”后可以找到它们。 然后在您的控制器中执行此操作:

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

允许您在新搜索后清空缓存,或者甚至在选择其他用户后清空缓存。

它应该工作;)