角 - 常数变量有条件决定

时间:2016-08-09 15:52:57

标签: angularjs

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

任何建议表示赞赏。

感谢。

3 个答案:

答案 0 :(得分:3)

您可以使用三元组:

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

答案 1 :(得分:3)

您可以使用detailed step-by-step guide for developing iOS apps with Azure Notification Hubs

.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
    })() 
)

答案 2 :(得分:0)

您的代码将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');