где я могу поместить конфиги в приложение angularjs?

111
7

В моем угловом приложении у меня есть URL-адрес, к которому я подключаюсь для получения некоторых данных, сервера с поддержкой CORS.

Теперь, до сих пор это было жестко закодировано в моем файле javascript:

server_url = "http://localhost:7888/api.php/json?id=2"

Теперь, при тестировании и производстве, эти URL-адреса, конечно, недействительны... и каждый раз, когда я делаю git pull он переопределяет мои настройки.

Где бы я элегантно поместил такую конфигурацию в угловое приложение?

спросил(а) 2014-11-13T20:14:00+03:00 6 лет, 11 месяцев назад
1
Решение
103

хорошо, в основном я бы принял подход mean.js здесь, его довольно легко реализовать, и он может быть полезен вам или кому-либо еще.

вы должны писать из своего промежуточного программного обеспечения в свой основной HTML файл в угловом (ex: index.html), в вашем случае URL-адрес вашей конечной точки должен меняться в зависимости от вашей среды, просто чтобы это было просто, допустим, что у нас есть dev (localhost) и производство (mydomain.com)

в вашем индексе html выполните простую запись:

 <script type="text/javascript">
<?php
if(strpos( $_SERVER['HTTP_HOST'], 'mydomain.com') !== false){
print "var endpoint = '"+ $server_url+ "';"
} else{
print "var endpoint = '"+ $local_url+ "';"
}

?>
</script>

тот, который вы получили в свой основной index.html, он доступен в угловом режиме с помощью объекта window, поэтому вы можете обернуть его в константу или службу.

это пример константы:

angular.module('app').run(function () {

}).value('endpoint', window.endpoint);

Я не владею PHP, но надеюсь, что вы сможете понять мою точку зрения

ответил(а) 2014-11-13T23:19:00+03:00 6 лет, 11 месяцев назад
46

Объявите его как константу. Предполагая, что у вас есть приложение с именем App:

angular.module('App', []).constant("urls", {"server_url":"http://localhost:7888/api.php/json?id=2"});

Объявленный как константа, вы должны вводить ее как зависимость, так же, как и сервис.

ответил(а) 2014-11-13T20:21:00+03:00 6 лет, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема