2016-08-09 438 views
0

In meiner Angular App habe ich definiert eine Konstante wie:Angular - Konstante Variable Beschlossen Bedingtes

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

Jedoch habe ich diese API URL wollen auf einem konstanten abhängig sein, die ich oben festgelegt haben, nämlich:

var WORKING_ON_ENV = "dev"; 

Also habe ich versucht, dies mit dem implementieren folgenden - aber seiner Arbeit nicht - dies mit kantiger Konstanten tatsächlich möglich ist ?:

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

Jeder Ratschlag geschätzt.

Danke.

Antwort

3

können Sie ein ternäres verwenden:

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

Ihr Code initialisiert die API konstant auf eine Funktion. Was Sie wollen, ist es auf den Wert von dieser Funktion zurück initialisieren:

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()); 

Aber diese inlined werden kann:

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