繁体   English   中英

Angular.js:存储来自http.get请求的变量以在不同的$ scope函数中全局使用

[英]Angular.js: Storing variable from http.get request to use globally in different $scope function

我正在尝试在Ionic / Cordova移动应用程序中实现无限滚动。 一旦用户点击页面底部,我的nextBatch变量将保存我需要获取的下一组对象的URL。 唯一的问题是,当我尝试在loadMoreData()函数中访问它时,它显示为未定义。 我尝试使用$ rootScope仅获得相同的结果。 有什么想法我应该如何处理吗?

谢谢!

.controller('HomeCtrl', function($scope,Model) {

        var nextBatch; //holds the url of the next batch
        $scope.model = []; //used in ng-repeat

        //loads an array of 5 objects
        Model.getAll().success(function(model){
            nextBatch        = model.meta.next; //for infinite scrolling 
            $scope.model     = model.objects; 
        })

        $scope.loadMoreData = function() {
            if (nextBatch !== undefined) {
                Model.getMore(nextBatch).then(function(model){
                   $scope.model.push(favours);
                   $scope.$broadcast('scroll.infiniteScrollComplete');
                })      
            }
};

 })

这是使无限滚动同步的方法。 我的意思是阻止loadMore直到第一个调用(getAll完成)。

.controller('HomeCtrl', function($scope, Model, $q) {
  var nextBatch; //holds the url of the next batch
  $scope.model = []; //used in ng-repeat

  var defer = $q.defer();
  var promise = defer.promise;

  //loads an array of 5 objects
  Model.getAll().then(function(model){
      nextBatch        = model.meta.next; //for infinite scrolling 
      $scope.model     = model.objects;
      defer.resolve(model);
      return defer.promise;
  });

  $scope.loadMoreData = function() {
      promise.then(function(result){
          if(nextBatch !== "END"){
            Model.getMore(nextBatch).then(function(favours){
              angular.forEach(favours.objects, function(item){
                $scope.model.push(item);
              });
              nextBatch = favours.meta.next;
            });
          }    
      });
  };
})

http://plnkr.co/edit/qohKNUd48czYKASNqCVP

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM