0

简要介绍一下我的工作:

这个应用程序是一个电话簿,它调用我们的后端系统并返回一个 JSON 有效负载,然后将其解析并存储到本地存储以供离线访问,然后数据以简单的主屏幕格式反映。

给出一个简单的工作流程:

  1. 用户登录
  2. 在用户帐户下通过 Ajax 请求调用后端
  3. 数据存储到本地存储
  4. 数据被添加到 $rootScope.allEmployeeInformation 变量
  5. Ion-List 反映了存储在主屏幕上 $rootScope.allEmployeeInformation 变量中的数据。

我的问题在这里:

登录后,数据被正确提取和存储,但 Ion-List 不会显示数据,直到通过我实现的下拉刷新功能、重新同步按钮或​​重新启动应用程序刷新页面。

有什么方法可以确保在用户不需要刷新页面的情况下显示这些数据?

将非常乐意提供所需的更多信息。谢谢你们的帮助!

编辑,根据要求使用一些代码更新:

执行ajax请求的代码

显示信息的 Html:

<ion-view> 
<ion-content class="scroll-content has-header animated fadeIn" ng-controller="HomeScreenController" padding="true">
<ion-refresher
pulling-text="Pull to resync...."
on-refresh="resyncEmployees(true)">
</ion-refresher>
<ion-list>
<ion-item
class="ion-item-content"
ng-repeat="employee in allEmployeeInformation | orderBy:'lastName'"
ng-controller="AccountCtrl"
ng-click="changeTabb(1, {{employee.identifier}})">

<div class="item-icon-left">
<i class="icon ion-person"></i>
<h3>{{employee.userCN}}</h3>
<h5>{{employee.title}}</h5>
<h6>{{employee.town}}</h6>
</div>

<div class="item-icon-right">
<i class="icon ion-chevron-right icon-accessory"></i>
</div>

</ion-item>
</ion-list> 
</ion-content>
</ion-view>

编辑#2:我相信我已经缩小到事实上是 ng-repeat 而不是 Ion-List 的问题,正如我乍一看所期望的那样。更新参考标签。

干杯! 麦克风

4

2 回答 2

4

很简单——你使用的是 jQuery$.ajax并且不会触发一个摘要循环。摘要循环是告诉 Angular 更新和 2 路绑定本质上的(愚蠢的)。使用提供的 Angular$http模块。

$http.get(agent).then(function(response) {

});

此外,您在location.reload()代码末尾调用 - 这将消除您迄今为止所做的任何客户端更改。你可能不需要那个。

于 2016-09-08T14:17:56.627 回答
0

在没有看到任何代码的情况下,您也可以尝试cache: false在路由配置中进行设置。请参见下面的示例:

.state('dashboard', {
  cache: false,
  url: '/dashboard',
  views: {
    'menuContent' : {
      templateUrl: 'templates/dashboard.html',
      controller: 'DashboardController',
    }
  }
})

如果您有任何代码可以发布,我可能会提供更多帮助。

编辑 为什么需要使用$rootscope?您还应该尝试使用$scope,因为如果您想在另一个视图或控制器中使用它,您将始终可以访问 localStorage 中的员工信息。

于 2016-09-07T19:46:35.243 回答