2016-12-09 4 views
1

У меня есть следующий блок Константы в моем AngularJS AppAngularJS константы с некоторой логикой

// Constants 
.constant('config', { 
    appName: 'MyApp', 
    appVersion: 1.0, 
    apiUrl: 'http://'+window.location.hostname+':8080' 
}); 

Остальная часть приложения использует apiUrl Constant с помощью config.apiUrl. Я хочу, чтобы следующее произойдет

// Constants 
    .constant('config', { 
     appName: 'MyApp', 
     appVersion: 1.0, 
     apiUrl:{"outer":"{'inner':{'key':'apValue'}}"} 
    }); 

Мне нужно разобрать JSON и обеспечить apiValue как apiUrl. Как это можно сделать с помощью JavaScript в этом файле?

Я хочу, чтобы клиенты продолжать использовать config.apiUrl, так что все синтаксический должно быть сделано в этом файле

+0

вы можете получить доступ к apiUrl так: 'apiUrl.outer.inner.key' –

ответ

0

Вы можете сделать JSON.parse на струне apiUrl. До этого убедитесь, что значение apiUrl в надлежащей строковой структуры JSON, как показано ниже:

// Constants 
.constant('config', { 
    appName: 'MyApp', 
    appVersion: 1.0, 
    apiUrl:JSON.parse('{"outer":{"inner":{"key":"apiValue"}}}').‌​outer.inner.key 
}); 

Если у вас есть apiUrl как объект, сделать

JSON.stringify({"outer":{"inner":{"key":"apiValue"}}}) 

и присвоить его конфигурации .apiUrl

Итак, когда вы хотите прочитать apiValue, вы можете получить его в качестве ссылки на объект, выполнив:

JSON.parse(config.apiUrl); 

Более подробную информацию о методах JSON here

+0

можно использовать методы JSON внутри декларация констант? Также я хочу, чтобы клиенты продолжали использовать config.apiUrl, поэтому я хочу, чтобы синтаксический анализ выполнялся с конечной строкой в ​​константе. ApiUrl –

+0

Да, вы можете использовать его следующим образом: '{ appName: 'MyApp', appVersion: 1.0, apiUrl: JSON.parse ('{"outer": {"inner": {"key": "apiValue"}}}') } '** или ** как это' { appName: 'MyApp', appVersion: 1.0, apiUrl: JSON.stringify ({"external": {"inner": {"key": "apiValue"}}}) } ' – superUser

+0

Спасибо, как я могу разобрать и присвоить значение« apiValue »участнику apiUrl, поэтому я могу продолжать использовать config.apiUrl на стороне клиента? –

0

Вот что я хотел бы попробовать:

.constant('config', { 
    appName: 'MyApp', 
    appVersion: 1.0, 
    // apiUrl:{"outer":"{'inner':{'key':'apiValue'}}"} 
    apiUrl: JSON.parse({"outer":"{'inner':{'key':'apiValue'}}".replace("'", '"')}['outer'])['inner']['key'] 
}); 
+0

Это дает синтаксическую ошибку –

+0

Это дает синтаксическую ошибку, потому что внутренний JSON неправильно отформатирован. Если вы правильно отформатируете его с помощью двойных кавычек, он будет работать. – 2ps

Смежные вопросы