2015-03-04 2 views
1

У меня есть веб-приложение AngularJS1.0.7. Я использую многоязычные URL-адреса, такие как domain.com/es или domain.com/en. I. У меня есть www.domain.com/es/about.AngularJS 1.0.7 изменить url

С другой стороны, у меня есть выделение со списком на панели навигации для изменения языка. Поэтому, когда пользователь меняет язык, язык языка URL должен измениться.

Как этого добиться?

Примечание: Пожалуйста, я знаю ui-router. Я буду оценивать его, но изменение кода довольно велико. Итак, мне хотелось бы знать подход с ng-маршрутом.

Примечание 2: Я также знаю, что моя угловая версия устарела. В более поздних версиях AngularJs я знаю, что существует $ route.updateParams ({language: newValue}); Но это не доступно в моей версии.

+0

Вы можете просто заменить язык часть URL и установить новый путь. – dfsq

ответ

1

Вы можете просто заменить язык часть URL (которая всегда находится в самом начале) и установить новый путь:

// Read current path, e.g. /es/about 
var path = $location.path(); 

// Replace language path 
var newLang = 'en'; 
var newPath = path.replace(/^\/.*?\//, '/' + newLang + '/'); 

// Set new path, e.g. /en/about 
$location.path(newPath); 
+0

Да, это был мой подход. Разбор URL вручную. – Rober

+0

Все в порядке, но подробно он не работает для домена/и домена/es. – Rober

+0

@Rober '$ location.path()' получает путь пути к URL-адресу, то есть без доменной части. Он всегда будет как '/ es/something'. – dfsq

0

Вам нужно что-то вроде этого:

$scope.$watch('language', function (newValue, oldValue) { 
     if (newValue !== oldValue) { 
      var path = $location.path(); 
      path = path.replace('/'+oldValue+'/', '/'+newValue+'/'); 
      console.log(path); 
      $location.path(path); 
      $route.reload(); 
     } 
    }); 
Смежные вопросы