2014-10-14 2 views
4

Я новичок в Angularjs, и я хотел бы добавить динамический субдомен, такой как sub.domain.com. Изменяя sub, я мог бы спросить правильные данные с сервера. Тем не менее, домашняя страница все равно будет такой же.динамический субдомен с угловыми

sub1.domain.com и sub2.domain.com будут иметь такую ​​же страницу home.tpl.html, за исключением того, что возвращенные данные будут специфичны для этого домена.
Это будет то же самое и для других страниц.

Есть ли способ сделать это?

+1

множество способов сделать это ... каковы ваши конкретные проблемы? – charlietfl

ответ

14

Главное, что вам нужно посмотреть, это $location service, в частности $location.host() method. Это вернет вам полный домен, оттуда легко получить субдомен и использовать его.

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

Что-то вроде:

app.factory('subdomain', ['$location', function ($location) { 
    var host = $location.host(); 
    if (host.indexOf('.') < 0) 
     return null; 
    else 
     return host.split('.')[0]; 
}]); 

Затем вы можете использовать это в качестве простого инъекционного значения в контроллерах, директивы и т.д.

app.controller('SomeCtrl', ['$scope', 'subdomain', function ($scope, subdomain) { 
    // use subdomain same as any other variable 
}]); 
+0

Как изменится моя маршрутизация, чтобы позволить sub1.domain.com правильно направлять запрос? прямо сейчас domain.com работает нормально, но, выполняя sub1.domain.com, я получаю сообщение об ошибке страницы. – kennyT07

+0

Я не знаю, это касается того, что вы размещаете этот веб-сайт и свой веб-сервер. Вероятно, вам также необходимо правильно настроить DNS. Это не имеет никакого отношения к Угловому. – GregL

2

субдоменов обслуживаются сервером, угловой в свою очередь, служит хэш/hashbang и ничего не знает о субдомене.

U может иметь 3 субдомен, например:

  • en.example.com (сконфигурирован вручную на сервере) |
  • de.example.com (настроен вручную на сервере) | -> example.com
  • it.example.com (настроен вручную на сервере) |

Каждый из них относится к главному example.com, но вы хотите чего-то достичь с помощью субдоменов, например i18n (с угловой).

Таким образом, когда кто-то подключается к en.example.com (на самом деле, запрос идет к example.com, где размещаются вы Угловая приложение), вы можете извлечь субдомны в угловом (ан в этом случае, смотрите пример в пост выше) и перевести угловой вид.

2

Почему нет разделения по точкам и подсчета элементов host()?

var host = $location.host(); 
var parts = host.split('.'); 
var subdomain = null; 

// more than domain.cn, will always return the first 
if (parts.length > 2) 
    subdomain = parts[0]; 

return subdomain; 

надеюсь, что это поможет!

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