2015-10-14 2 views
0

Я хотел бы получить доступ к угловой странице из html-формы. Но когда я отправляю форму через метод get и с параметром, я получаю некоторую проблему с URL-адресом.Доступ к угловой странице из формы

Вот простая форма для воспроизведения проблемы:

<form action="http://ncel28182/pl/Angular/#/FFCO"> 
     <input type="text" name="test"> 
     <button>toto</button> 
</form> 

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

http://ncel28182/pl/Angular/?test=#/FFCO 

Кажется, что параметры перед #.

Есть ли способ исправить это?

ответ

0

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

HTML:

<form name="myForm" ng-submit="submit()"> 
    <input type="text" name="test"> 
    <button>toto</button> 
</form> 

Javascript:

function submit($scope, $location, MyService) { 
    MyService.data = $scope.myForm.test; 
    $location.url("/pl/Angular/#/FFCO"); 
} 

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

Обратите внимание, что я не профессиональный пользователь angularjs или даже веб-разработчик, вам, вероятно, стоит подождать, пока другие пользователи отреагируют на мой ответ или добавят свои собственные.

+0

Я бы хотел, но форма находится на веб-сайте, который не обрабатывается мной и что его не следует изменять. Этот сайт перенаправляется на мой, когда мы отправляем форму. –

+0

@GuillaumeRahbari можете ли вы хотя бы попросить их изменить URL-адрес действия? Если это так, установка $ location для использования html5mode в вашем угловом приложении может помочь, см. Https://docs.angularjs.org/guide/$location#html5-mode – Aaron

+0

К сожалению, я не могу. И я попробовал html5mode, и это не решило проблему:/ –

0

Поскольку вы не можете редактировать форму отправки данных, вы не можете использовать ngRoute для прямого перехода к нужному представлению «FFCO», потому что ngRoute сопоставляется с $ location.path, тогда как форма отправляет часть «FFCO» как $ location.hash. Поскольку у вас нет $ location.path, форма будет нацелена на ваш корень приложения.

Что вы хотите сделать, это добавить некоторые JS-код на этой странице, чтобы справиться с изменением местоположения:

if ($location.hash() === "/FFCO") { $location.path("/FFCO"); } 

Это должно сделать трюк, переводя URL запрошенной форме в формат, понятный вашим угловое приложение. Я не думаю, что это изменит хеш, если дополнительный #/FFCO к концу вашего URL-адреса является проблемой, вы должны удалить его с помощью $location.hash('').

Я считаю, что лучшее место для этого было бы в дополнительном контроллере, добавленном где-то после вашего загрузочного кода приложения.

Это, очевидно, все еще не оптимально, я бы хотел, чтобы у меня было лучшее решение.