[Angularjs]如何动态添加角度模块的服务?

问题描述 投票:0回答:1

我想动态地向Angularjs模块添加一些服务。我想知道是否有任何方法可以这样做?

// Senarios config for dev
let scenarioConfig1 = require(`./${env}/scenarios_config_files/scenario1.config`);
let scenarioConfig2 = require(`./${env}/scenarios_config_files/scenario2.config`);
let scenarioConfig3 = require(`./${env}/scenarios_config_files/scenario3.config`);
let scenarioConfig4 = require(`./${env}/scenarios_config_files/scenario4.config`);
let scenarioConfig5 = require(`./${env}/scenarios_config_files/scenario5.config`);
let scenarioConfig6 = require(`./${env}/scenarios_config_files/scenario6.config`);

//I wonder if there is any way, I can add these 6 service dynamically to my Angularjs
//Module instead adding them one by one
module.exports = angular.module('myApp', [])
  //scenarios config service for dev and prod
  .service('scenarioConfig1', [
    scenarioConfig1])
  .service('scenarioConfig2', [
    scenarioConfig2])
  .service('scenarioConfig3', [
    scenarioConfig3])
  .service('scenarioConfig4', [
    scenarioConfig4])
  .service('scenarioConfig5', [
    scenarioConfig5])
  .service('scenarioConfig6', [
    scenarioConfig6]);
angularjs service module
1个回答
0
投票

可以这样做:

let services = [
  'scenario1',
  'scenario2',
  'scenario3'

].map(s => {
  return {
    name: s.replace(/(\d+$)/, 'Config$1'),
    func: require(`./${env}/scenarios_config_files/${s}.config`)
  }
});


let app = angular.module('myApp', []);
services.forEach(o => app.service(o.name, [o.name, o.func]));
module.exports = app;
© www.soinside.com 2019 - 2024. All rights reserved.