Подтвердить что ты не робот

Angularjs $location.hash делает ##, но мне нужно #

AngularJS 1.2.0 (но более низкие версии имеют одинаковую проблему)

У меня есть веб-приложение с некоторыми виджетами и вы хотите сохранить их состояние в URL. Теперь я делаю это с помощью команды $location.hash('param1=1&param2=678'). Но я получаю url как: domain.com/##param1=1&param2=678 Он работает нормально, я могу восстановить состояние своего приложения. Одна из проблем, с которой я сталкиваюсь, - это когда кто-то щелкает такую ​​ссылку, например, в почтовом приложении, их браузер кодирует один из хэшей с помощью /23, и поэтому мое приложение идет не так. Как я могу это решить? Благодаря

Вот панель: http://plnkr.co/edit/VVjEUzROou6hu8B8sURa?p=preview Вам нужно открыть его в новом окне, чтобы проверить хэши

4b9b3361

Ответ 1

для стандартных хэш-позиций в angular, вы используете

location.path("myappstate/1");

как angular настроен, чтобы думать о первом хеш-состоянии в качестве основного URL-адреса или пути для приложения. Функция location.hash() устанавливает вторичный хеш в основном хеш-состоянии (путь)

Ответ 2

Это не лучший ответ, но вы можете попытаться ввести $locationProvider и установить:

$locationProvider.html5Mode(true);

Таким образом, angular работает в режиме HTML5 и не использует hashbangs. Я рекомендую этот вопрос SO для получения дополнительной информации.

Ответ 3

Попробуйте использовать

$location.search("key", "value")

вместо этого. Если у вас сложное состояние, вы можете даже напрямую предоставить объект методу поиска:

$location.search({foo: bar, baz: duh});