服务后的角度负载控制器获得了一个swagger api文件

时间:2016-06-07 14:27:35

标签: angularjs swagger

我有一个使用swagger-js启用api的控制器。然而,在swagger库获取swagger sepcification文件之前,api不可用。我希望控制器能够将此作为API加载,只有在swagger API可用且可以使用之后才能加载。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

在Swagger配置完毕后,您必须在初始化阶段保留controller(您的意思是service?)。

我会通过$q承诺来实现它,resolves配置Swagger然后设计controller上的所有其他函数(我会写一个service包装器然而,在它周围,返回依赖于初始化承诺的then分支的Promises。

实施将是这样的:

angular.module('myModule', [])
.service('swaggerService', ['$q', function ($q) {
  var deferred = $q.Promise(),
      initPromise = deferred.promise;

  // This function should be called when Swagger is done initializing.
  // It may be best to initialize Swagger here itself, if that is an option.
  swatterInitCb(function (err) {
    if (err) {
      deferred.reject(err);
    } else {
      deferred.resolve();
    }
  });

  return {
    // This function will return a Promise.
    getData: function (dataId) {
      return initPromise.then(function (dataId) {
        // Use Swagger (which is now guaranteed to be intialised)
        // to get data from dataId
        return data;
      });
    }
  }
});