我正在编写一个包含两个 .value 配方的配置模块:
- 基本网址
- 位于 baseURL 之上的许多 REST api URL
我目前已将它们设置为 .value 但它们也可以很容易地设置为 .constant
因为我希望能够更改 baseURL 而不必重写所有 API url,所以我需要引用我刚刚定义的 baseURL - 在同一个模块中:
var configuration = angular.module('configuration', []);
configuration.value('Config',{
baseURL : 'http://dev.mysite.com/', // define Base URL
});
configuration.value('ApiList', {
getMyDataLink1 : this.baseURL + 'rest/folder1/action1/api_key/',
getMyDataLink2 : this.baseURL + 'rest/folder2/action2/api_key/',
getMyDataLink3 : this.baseURL + 'rest/folder3/action3/api_key/',
});
当我测试变量时:
Config.baseURL
正确输出为http://dev.mysite.com/
ApiList.getMyDataLink1
只定义了一半,因为该this.baseURL
部分未定义(即它输出undefinedrest/folder1/action1/api_key/
)
我还尝试将 ApiList .value 定义为:
getMyDataLink1 : Config.baseURL + 'rest/folder1/action1/api_key/',
//or
getMyDataLink1 : baseURL + 'rest/folder1/action1/api_key/',
但其中任何一个都会给出“未捕获的 ReferenceError:未定义 XXXX”错误...
是否可以从同一模块中的另一个 .value 引用 .value ?
编辑:见http://jsfiddle.net/goredwards/yy5xuodh/
EDIT2:请参阅http://jsfiddle.net/goredwards/xvj5xcgz/我已将第二个 .value 转换为 .factory - 然后与小提琴底部的 js-only 方法进行比较 - 必须更简洁比这还多!?