简要介绍一下我正在做的事情:
此应用程序是一个电话簿,它调用我们的后端系统并返回一个JSON有效负载,然后将其解析并存储到本地存储以供离线访问,然后以简单的主屏幕格式反映数据。
提供简单的工作流程:
我的问题在于:
登录后,数据被拉出并正确存储,但Ion-List不显示数据,直到通过我实现的pull to refresh功能刷新页面,重新同步按钮或重新启动应用程序。
有没有办法确保在用户不需要刷新页面的情况下显示这些数据?
非常乐意提供所需的更多信息。谢谢你的帮助!
根据要求编辑,更新一些代码:
Code which performs the ajax request
显示信息的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。更新参考标签。
干杯! 麦克
答案 0 :(得分:4)
非常简单 - 你正在使用jQuery的$.ajax
并且不会触发摘要周期。摘要周期是告诉Angular更新和2路绑定的原因(dumbed down)。使用提供的Angular $http
模块。
$http.get(agent).then(function(response) {
});
此外,您在代码末尾调用location.reload()
- 这将消除您迄今为止所做的任何客户端更改。你可能不需要那个。
答案 1 :(得分:0)
如果没有看到任何代码,您也可以尝试在路由配置中设置cache: false
。见下面的例子:
.state('dashboard', {
cache: false,
url: '/dashboard',
views: {
'menuContent' : {
templateUrl: 'templates/dashboard.html',
controller: 'DashboardController',
}
}
})
如果您有任何可用的代码发布,我可以提供更多帮助。
修改强>
为什么需要使用$rootscope
?您还应该尝试使用$scope
,因为如果您想在另一个视图或控制器中使用它,您将始终可以访问localStorage中的员工信息。