从http调用和自动重新加载获取新数据的问题

时间:2015-07-16 21:12:43

标签: javascript angularjs angularjs-scope ionic-framework angularjs-service

在我的离子应用程序中,我有两项服务研究和收藏。研究进行http调用以获取一个json对象,该对象获取一个JSON数组对象,我遍历并显示在html页面上。这是研究服务:

.factory('Studies',function($http,$filter,$q){
    var deferred = $q.defer();
    $http.get("http://localhost/platform/loginSuccess.json").success(
            function(data){
                // angular.copy(data, studies);
                deferred.resolve(data);
            }
        );

  return {
    all: function(){
      return deferred.promise;
    }
};
})

这是控制器代码:

$scope.studies = [];

Studies.all().then(function(data) {
                $scope.x = angular.fromJson(data.allProjects);
                $scope.studies = angular.fromJson($scope.x.list);
            });

这是它在html中的显示方式:

<div class="feed-item" ng-repeat="study in studies">
        <div class="feed-media">
            <img src="http://www.speedhunters.com/wp-content/uploads/2013/12/Lamborghini-Hurac%C3%A1n-LP610-4-01_N3-1200x800.jpg" class="feed-image">
            <div class="feed-gradient-overlay"></div>
            <a href="#/app/studies/{{study.nodeRef}}"><h4 class="feed-title">{{study.title}}</h4></a>z
        </div>
</div>

study.nodeRef然后在同一个控制器中提取,然后被提取到另一个使用nodeRef调用另一个服务的函数。

scope.nodeId = $stateParams.studynodeRef;
$scope.collection = [];

Collections.fetchCollection($scope.nodeId).then(function(data){
              $scope.y = angular.fromJson(data.list);
              $scope.collections = angular.fromJson($scope.y[0].collections);
});

以下是馆藏服务:

.factory('Collections', ['$q', '$http', function($q, $http) {
    return {

        fetchCollection: function(collectionId) {
            var deffered = $q.defer();

            $http({
                method: 'post',
                url: 'http://localhost/platform/project/fetch.json',
                params: {
                  'nodeRef': collectionId
                }
            }).success(function(data) {
                deffered.resolve(data);
            });

            return deffered.promise;
        }

    };
}])

然后我遍历我的menu.html页面中的集合,这基本上是我所有模板中的侧边菜单:

<ion-list ng-controller="NavigationCtrl" ng-repeat="collection in collections">
      <ion-item nav-clear menu-close ng-click="go('app.studies')" class="item item-icon-left brand-base-text-color">
          <i class="icon ion-ios-paper"></i>
            {{collection.name}}
        </ion-item>

现在当我点击studies.html页面上的一项研究时,它会重定向到相应的#/ app / studies / {{study.nodeRef}}但是,侧边菜单甚至不会更新侧边菜单上的集合刷新之后。研究和收集服务都在同一个名为AppCtrl的控制器下。如何根据研究的适当nodeRef自动重新加载集合?

修改

以下是我的app.js文件中的代码,用于研究,学习和菜单(集合的迭代完成)。可以看出,它们都使用名为AppCtrl的相同控制器:

  .state('app', {
    url: "/app",
    abstract: true,
    templateUrl: "templates/rubyonic/menu.html",
    controller: 'AppCtrl',
    reload: true
  })   

.state('app.studies', {
    url: "/studies",
    views: {
      'menuContent': {
        templateUrl: "templates/rubyonic/studies.html",
        controller: 'AppCtrl',
        reload: true
      }
    }
  })

   .state('app.study', {
    url: "/studies/:studynodeRef",
    views: {
      'menuContent': {
        templateUrl: "templates/rubyonic/overview.html",
        controller: 'AppCtrl',
        reload: true
      }
    }
  })

0 个答案:

没有答案