从数据库获取配置设置以在 angular 中跨应用共享

get config settings from database to share across app in angular

我正在尝试找出从我的数据库 table 检索我的配置设置并在我的应用程序中使用它们的最佳实践方法。我正在为 RESTful API 使用 PHP Slim。我不确定哪个更好?使用 $rootScope 或服务,以及处理它的最佳方法?

使用 SLIM 的示例。如果我想要配置的所有字段 table 我 运行 这个在控制器里面:

Data.get('config').then(function(data){
    configs = data.data;
});

目前我有一项服务,但它不工作:

app.factory('dataShare', function($rootScope, $log, $http, Data) {

  var configs = {};

  Data.get('config').then(function(data){
    configs = data.data;
  });

  return configs;

});

我需要能够在我的 postCtrl 中获取这些字段中的任何一个。

你正在毁掉你的推荐信。

app.factory('dataShare', function($rootScope, $log, $http, Data) {

  var service = {};

  Data.get('config').then(function(data){
    service.configs = data.data;
  });

  return service;

});

然后在您使用 dataShare 的 controllers/other 服务中像 dataShare.configs 一样使用它们。

我更改了之前答案的一些内容,包括展示了应该如何调用打印输出,因为我们将异步行为继续到您的控制器中。

  app.factory('dataShare', function($rootScope, $q, $log, $http, Data) {

      var configs= {};
      configs.getconfigs=function(){
          var deferred = $q.defer();
          Data.get('config').then(function(data){
            deferred.resolve(data.data);
          });
          return deferred.promise;
      }



    return configs;
    });

然后只要你注入了 q 并且这个控制器控制的页面有

就应该能够在你的控制器中调用它
<script src= "https://cdnjs.cloudflare.com/ajax/libs/q.js/2.0.3/q.min.js"></script>

然后调用这个。

dataShare.getconfigs().then(function(data){
    console.log(data);
});