Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 离子型/角度型-刷新应用程序简历上的文章_Javascript_Angularjs_Ionic Framework - Fatal编程技术网

Javascript 离子型/角度型-刷新应用程序简历上的文章

Javascript 离子型/角度型-刷新应用程序简历上的文章,javascript,angularjs,ionic-framework,Javascript,Angularjs,Ionic Framework,我已经开发了一个使用Ionic/Angular的新闻应用程序。以下是“新闻”选项卡的代码: <ion-view view-title="News"> <ion-content class="padding"> <ion-refresher pulling-text="Actualizează articolele" on-refresh="doRefresh()"> </ion-refresher> <a cl

我已经开发了一个使用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>
$scope.articles=articles
从外部JSON文件读取文章


因此,我有拉刷新选项工作,但有一个问题如果用户在后台打开应用程序,我希望在用户再次打开应用程序时刷新文章。有人可以帮助我实现这一点吗?

一个好的解决方案是使用cordova,并在触发刷新回调时触发它。您可以使用以下代码来定义这一点:

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');
  };

})
.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');
  };

})