正在存储应用程序配置设置

Storing application configuration settings

本文关键字:配置 设置 应用程序 存储      更新时间:2023-09-26

AngularJS中存储应用程序配置设置的最佳位置是什么?这可以是应用程序常量、查找等,既可以从控制器使用,也可以从服务或工厂使用。我可以创建一个单独的服务来存储和检索这些东西,但我想知道是否还有其他合适的地方可以存储和检索它们。

您可以使用constant()提供程序!

app.constant('myAppConfig', {ver: '1.2.2', bananas: 6, hammocks: 3, bananaHammocks: true});

这与Terry的解决方案没有太大区别,但常量不会改变,所以它们在其他提供者之前应用。此外,这个模块可以被注入到您的配置函数中。

app.config(function(myAppConfig){
    console.log(myAppConfig.bananaHammocks);
});

玩得开心

不确定是否有"最佳方式",但我个人使用服务,这里有一个缩写示例:

angular.module('myApp').factory('AppSettings', function() {
  return {
    language: 'en'
  }
});
angular.module('myApp').controller('myController', ['AppSettings', 
  function(AppSettings) {
    $scope.language = AppSettings.language;
  }
]);

您也可以使用provider而不是service,并且在任何地方都可以轻松使用。

angular.module('App', []).provider('config',
function() {
    var conf = {
        ver: '1.2.2',
        bananas: 6,
        hammocks: 3,
        bananaHammocks: true,
        baseUrl:'data/'
    };
    conf.$get = function () {
        delete conf.$get;
        return conf;
    };
    return conf;
});

然后在配置中用作configProvider:

angular.module('App').config( function(configProvider) {} );

运行中,控制器、服务等如config:

angular.module('App').run( function(config) {} );

这是一个示例链接,代码为

定义:

angular.module('starter.config', [])
.constant('appConfig', {
  'backend': 'http://localhost:3000/v1'
});

用法:

angular.module('starter.services', ['starter.config'])
.factory('Locations', function(appConfig, $http) {
  return {
    all: function(successCb, errorCb) {
      $http.get(appConfig.backend + '/locations.json')
      .success(successCb)
      .error(errorCb);
    },
    get: function(locationId, successCb, errorCb) {
      $http.get(appConfig.backend + '/locations/'+ locationId +'.json')
      .success(successCb)
      .error(errorCb);
    }
  };
})

添加此项可以访问全局变量

app.run(function ($rootScope) {
    $rootScope.globalVariable = 'Amadou'; //global variable
});

现在,如果你想从你的控制器使用它

function appNameCtrl($scope, $rootScope){
    $rootScope.globalVariable = 'Modji';
}

在您的视图中

My name is {{globalVariable}}