我已经使用Ionic / Angular开发了一个新闻应用程序。这是“新闻”标签的代码:
<ion-view view-title="News">
<ion-content class="padding">
<ion-refresher pulling-text="Actualizează articolele" on-refresh="doRefresh()">
</ion-refresher>
<a class="article" ng-repeat="article in articles" href="#/tab/news/{{article.id}}">
<img ng-src="{{article.image}}" class="article-image">
<h2 class="article-title">{{article.title}}</h2>
<p class="article-published">{{article.published}}</p>
<p class="article-intro">{{article.intro}}...</p>
</a>
</ion-content>
</ion-view>
这是控制器:
.controller('NewsCtrl', function($scope, Articles) {
Articles.all().then(function(articles) {
$scope.articles = articles
});
$scope.doRefresh = function() {
Articles.all().then(function(articles) {
$scope.articles = articles
});
$scope.$broadcast('scroll.refreshComplete');
};
})
$scope.articles = articles
从外部JSON文件读取文章。因此,我可以使用“刷新”选项,但是有一个问题。如果用户将应用程序在后台保持打开状态,那么我希望在用户再次打开应用程序时刷新文章。有人可以帮助我实现这一目标吗?
最佳答案
一个好的解决方案是使用cordova resume
event并在触发它时触发刷新回调。您可以使用以下代码进行定义:
document.addEventListener("resume", yourCallbackFunction, false);
但是,更好的方法是使用
$ionicPlatform
服务。.controller('NewsCtrl', function($scope, Articles, $ionicPlatform) {
$ionicPlatform.on('resume', $scope.doRefresh);
Articles.all().then(function(articles) {
$scope.articles = articles
});
$scope.doRefresh = function() {
Articles.all().then(function(articles) {
$scope.articles = articles
});
$scope.$broadcast('scroll.refreshComplete');
};
})
另外,另一种方法是在根范围上广播,以避免破坏控制器内部的角度。
app.module('myApp',[])
.run(function ($rootScope) {
document.addEventListener("resume", function () {
$rootScope.$broadcast('onAppResume');
}, false);
});
然后,您可以从控制器监听此事件:
.controller('NewsCtrl', function($scope, Articles) {
$scope.$on('onAppResume', $scope.doRefresh);
Articles.all().then(function(articles) {
$scope.articles = articles
});
$scope.doRefresh = function() {
Articles.all().then(function(articles) {
$scope.articles = articles
});
$scope.$broadcast('scroll.refreshComplete');
};
})
关于javascript - Ionic/Angular-在应用履历表上刷新文章,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40361932/