在我的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');