【问题标题】:Angularjs: a condition before requesting data?Angularjs:请求数据之前的条件?
【发布时间】:2015-08-20 10:18:51
【问题描述】:

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

我正在使用角度路由,所以我决定在加载控制器之前调用数据,我有一个路由 [动态路由] 的多个页面,我能够为每个页面返回不同的数据,具体取决于它是 slug,但是无论 slug 是什么,都会返回一些数据,因此我为返回 true 或 false 的数据返回了一些键。

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

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

我能够使用自己的控制器根据键返回数据,但是存在一些延迟,控制器完全加载后数据当然会加载,某些功能 [插件] 可能无法正常工作,以及其他问题。

感谢阅读

【问题讨论】:

    标签: javascript angularjs angularjs-directive angularjs-scope angularjs-ng-repeat


    【解决方案1】:

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

    https://docs.angularjs.org/api/ngRoute/service/$route

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      • 1970-01-01
      • 2023-04-01
      • 2014-03-05
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多