2016-12-01 5 views
1

새 창을 열고 상태로 이동 한 후 URL을 수정해야합니다.각도 환경의 URL 바꾸기

내 시작 페이지는 다음과 같습니다.
localhost:8000/startpage.html.
URL을로드하면
localhost:8000/startpage.html#/이됩니다.
새 창에서 새로운 상태로 이동합니다 :
localhost:8000/startpage.html#/newstate.

원하는 URL은 다음과 같습니다.
localhost:8000/startpage.html?project=1#/newstate.

나는 것을 제외하고 거의 정확한 결과를 얻는 대신 URL을 교체하고는 완전히는 localhost:8000/startpage.html#/
?project=1#/newstate을 추가합니다. 나는 두 데 나에게

if ($window.history.replaceState) { 
    var newUrl = '?project=903' + '#/case'; 
    $location.path(newUrl); 
    $location.replace(); 
}; 

이 보인다 : 여기 localhost:8000/startpage.html?project=903#/newstate


는 몇 가지 관련 코드 :
localhost:8000/startpage.html#/%3Fproject=903%23/newstate
내가 필요로하는 동안 :

그래서 결과는이 같은 것입니다 문제. '.html'뒤에 추가 된 '# /'와 URL이 인코딩됩니다. 왜냐하면 비록 내가 여분의 '# /'을 제거하더라도 실제 문자로 인코딩 된 문자를 대체하지 않으면 여전히 작동하지 않기 때문입니다. 도와주세요.

감사 AngularJS와 1로

+0

당신이 여기 달성하기 위해 무엇을하려고하는 정말 분명하지 않다 : 여기

좋은 기사입니다.'# '은 Angular가 처리하는 부분과 서버가 처리하는 부분을 나타냅니다. 'localhost : 8000/startpage.html? project = 1 #/newstate'와 같은 URL은 여러분의 서버에'project = 1'을 보내고 새로운 각도의 응용 프로그램을 가지고있는 새로운 페이지를 다시 보내길 원합니다. 그 다음에 'newstate'로 보내진다. 이것은 다소 성가신 것 같습니다 ... – Claies

답변

2

나는 잘못된 방법을 사용하고 있다고 생각합니다. $location.url을 사용하면 path, queryhash 값을 한꺼번에 설정할 수 있습니다. 그러나 전체 URL을 변경할 필요가 없으므로 queryhash을 별도로 설정하는 것이 좋습니다. 그것은 필요가 없기 때문에

$location.search('project', '903'); 
$location.hash('case'); 

은 내가 hash에서 /를 제거했습니다.

또한 기본적으로 각도는 해시 모드를 사용하여 경로를 탐색합니다. 해시를 제공하려면 해당 동작을 해제해야한다고 생각합니다.

$locationProvider.html5Mode(true); 

응용 프로그램 구성에서 설정하십시오. https://scotch.io/tutorials/pretty-urls-in-angularjs-removing-the-hashtag

+0

아니요, 다음과 같이 보입니다 : localhost : 8000/startpage.html #/case? project = 903 # % 2Fcase – Mark

+0

'$ '를 호출 할 때 우연히'#' location.hash'? –

+0

아니요, 저는이 두 줄만 있습니다 : $ location.search ('project', '903'); $ location.hash ('case'); – Mark

1

# 기호는 일반적으로 ngApp 지침을로드 페이지를 다음과 만약 내가 잘못 ... pls는 저를 수정합니다.

그래서 내가

그것은 아주 나쁜 연습 상점입니다 ... 그 유일한 해결책은 당신이 # 태그를 표시 할 페이지의 링크를 ngApp 지침을 가지고 생각합니다.