Angularjs:请求数据之前的一个条件



注意:这是一个动态应用程序。

我使用角路由,所以我做了一个决议,在加载控制器之前调用数据,我有多个页面,一个路由[动态路由],我能够为每个页面返回不同的数据,取决于它的弹头,但是一些数据将被返回,无论什么是弹头是,所以我返回了一些键的数据返回真或假。

我要求的是我是否能够检查一个键是否为真,并在加载控制器之前请求它的数据?完全前端

// Routes
app.config(function($routeProvider, $locationProvider){
  $routeProvider
    .when('/:name', {
       templateUrl: '/views/main.html',
       controller: 'mainCtrl',
       resolve: {
        // RESOLVE THE MAIN DATA
        page: function(srvLibrary,$route, $rootScope) {
          return srvLibrary.getPage($route.current.pathParams.name);
        },
        // RESOLVE THE PROJECTS DATA
        projects: function(srvLibrary,$route, $rootScope) {
         return srvLibrary.getProjects();
        }
      }
    });
});
// USING FACTORY TO RESOLVE DATA
app.factory('srvLibrary', ['$http','$rootScope', '$interval' ,'$route', function($http,$rootScope, $interval, $route) {
  return {
    getPage: function(slug) {
    // THIS IS THE MAIN PAGE PROMISE [DYNAMIC ROUTED]
      var promise = $http({
        method: 'GET',
        url: baseUrl + '/api/v1/page.json',
        params: {menu_slug: slug}
      })
      promise.then(
        function(data) {
          return data;
        },
        function(error) {
          return false;
        },
        function(progress) {
          // report progress
        });
      return promise;
    },
    // PROJECTS DATA
    getProjects: function() {
      var promise = $http({
        method: 'GET',
        url: baseUrl + '/api/v1/portfolio.json'
      });
      promise.success(function(data) {
        return data;
      });
      return promise;
    },
  }
});
// MAIN CONTROLLER
app.controller('mainCtrl', function($scope, page){
  $scope.data = page.data;
  $scope.projects = projects.data;
});

我能够根据使用控制器本身的键返回数据,但是有一些延迟,数据当然在控制器完全加载后加载,一些功能[插件]可能不工作,以及其他问题。

感谢阅读

您可以监听$route事件之一,如$routeChangeSuccess,它在您的resolve依赖项可用后触发。

https://docs.angularjs.org/api/ngRoute/service/美元路线

最新更新