2015-10-14 41 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用戶,甚至web開發人員,您應該等待其他用戶對我的回答作出反應或添加他們自己的答案。

+0

我想,但窗體是在一個網站,不由我處理,它不應該改變。我們提交表格時,該網站會重定向到我的網站。 –

+0

@GuillaumeRahbari您至少可以要求他們更改操作網址嗎?如果是這樣,在你的角度應用中設置$ location來使用html5mode可能會有所幫助,請參閱https://docs.angularjs.org/guide/$location#html5-mode – Aaron

+0

不幸的是,我不能。我嘗試了html5mode,但它並沒有解決問題:/ –

0

由於無法編輯發送數據的表單,因爲ngRoute與$ location.path匹配,所以不能使用ngRoute直接路由到所需的「FFCO」視圖,而表單將「FFCO」部分作爲$ location.hash。由於您沒有提供$ location.path,因此表單將以您的應用程序根目標爲目標。

你會想要做的就是在此頁面中添加一些JS代碼來處理的位置變化:

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

這應該做的伎倆,翻譯由形式要求的格式可以理解的網址您angularjs應用程序。我不認爲這會改變哈希值,如果在URL末尾增加#/ FFCO是一個問題,您應該使用$location.hash('')將其刪除。

我相信最好的地方是在你的應用程序引導代碼後面添加一個額外的控制器。

這顯然還是次優,我希望我有更好的解決方案。