当用户返回ionic1时,如何再次显示搜索结果

时间:2017-08-24 14:08:28

标签: html angularjs ionic-framework

我创建了一个应用程序,其中我有一个列表显示联系人和搜索栏,当用户在搜索中键入任何文本时,列表会根据它进行过滤并且按预期工作。但是如果用户选择搜索item并执行一些操作并回到同一个列表,列表应该显示值(他在搜索框中键入的关键字)以及过滤结果。但实际发生的是当我回到列表页面后某些操作显示所有结果而不是过滤结果。是否有任何可能的方法显示过滤结果,即使我们在从列表中选定的项目执行某些操作后返回到同一页面。

<ion-content class="p-l-10 p-r-10 had-header kp-list" scroll="false">
<div>
  <div class="list nodata" ng-if="vm.farmers.length === 0">
    <h4><p>{{"nodatatoshow_message" | translate}}</p></h4>
  </div>

  <div class="list list-inset search_box m-t-10 m-r-10 m-l-10" ng-if="vm.farmers.length !== 0">
    <label class="item item-input search_cont"> <i class="icon ion-search placeholder-icon"></i>
    <!-- <input type="text" placeholder="search..." ng-model="vm.search"> -->
    <input type="text" placeholder="search..." ng-model = "vm.search" ng-change="vm.getUsersByName(vm.search)">
    </label>
  </div>
</div>
<ion-scroll direction="y" style="height: 100%; margin-top: -5px">
  <!-- Option to handle no list -->
  <div>
    <ion-list class="trans-item ">
      <div class="FramerList list" ng-repeat="farmer in vm.farmers" ng-click='vm.gotoFarmerDetail(farmer)'>
        <a class="item item-avatar" href="#">
            <img src="main/assets/images/profile-pic.jpg">
            <h2>{{farmer.name | limit }}</h2>
            <h3>{{farmer.mobile_no}}</h3>
        </a>
      </div>
    </ion-list>
    <ion-infinite-scroll 
      on-infinite="vm.loadMore()"
      ng-if="!vm.moreData"
      distance="10%">
    </ion-infinite-scroll>
  </div>
</ion-scroll>

控制器:

function activate () {
  Analytics.trackPage('Farmer-List-Page');
  vm.farmers = [];
  vm.totalcount = [];
  vm.moreData = false;
  DB.getContact('contacts', limit, offset, 'Farmer').then(function (result) {
    for (var i = 0; i < result.rows.length; i++) {
      $log.log('result of selected farmer', result);
      vm.farmers.push(result.rows.item(i));
    }
    $log.log('vm.farmers: ', vm.farmers);
  }, function (err) {
    $log.log('err', err);
  });

  Contact.get(['Farmer']).then(function (resp) {
    $log.log('resp...', resp);
    vm.totalcount = resp.length;
    $log.log('vm.farmers totalcount: ', vm.totalcount);
    $log.log('vm.farmers totalcount: ' + JSON.stringify(vm.totalcount));
  });
}

1 个答案:

答案 0 :(得分:0)

除非您以任何方式禁用了view caching功能,否则这应该可以正常工作 您希望它被启用。您可能需要检查以下内容:

  1. 检查您所在州的路由代码,因为可以通过添加cache: false属性来禁用视图缓存。如果已设置,则要删除此属性。
  2. 可以通过在cache-view="false"元素上添加ion-view属性来禁用模板中的视图缓存。如果已设置,则要删除此属性。
  3. 检查您的应用配置部分,可以disable view caching globally