Angular语言 - 常量变量有条件地决定



在我的Angular应用中,我定义了一个常量:

var app = angular.module('app', ['ngTagsInput'])
   .constant('API', 'https://www.example.com/api/v1')
})();

但是我希望这个API URL依赖于我上面设置的常量,即:

var WORKING_ON_ENV = "dev";

所以我试着用下面的代码来实现这个——然而它不工作——这实际上是可能的Angular常量吗?:

.constant('API', function() {
  if (WORKING_ON_ENV == "prod") {
    return 'https://www.example.com/api/v1'
  } else {
    return 'https://www.example.com/api/v2'
  }
})

欢迎指教。

谢谢。

可以使用三元制:

var app = angular.module('app', ['ngTagsInput'])
   .constant('API', (WORKING_ON_ENV == "prod" ? 'https://www.example.com/api/v1' : 'https://www.example.com/api/v2'))
})();

您可以使用IIFE(立即调用的函数表达式)

.constant('API', 
    (function() {
      if (WORKING_ON_ENV == "prod") {
        return 'https://www.example.com/api/v1'
      } else {
        return 'https://www.example.com/api/v2'
      }
    //Immediately invoke it
    })() 
)

您的代码将API常量初始化为一个函数。你需要做的是将它初始化为函数返回的值:

function getApi() {
  if (WORKING_ON_ENV == "prod") {
    return 'https://www.example.com/api/v1'
  } else {
    return 'https://www.example.com/api/v2'
  }
}
.constant('API', getApi());

但这可以内联:

.constant('API', WORKING_ON_ENV == "prod" ? 'https://www.example.com/api/v1' : 'https://www.example.com/api/v2');

最新更新