2016-07-10 2 views
1

Эта функция вызывается при нажатии кнопки на моей веб-странице.

$scope.go=function(takenAt){ 
    var path = '/oneMinuteMetric/loadCapturedMetrics?'+'&timestamp=' + takenAt + '&tagName='+ $stateParams.tagName; 
    console.log(path); //first 
    $location.path(path); 
    console.log($location.path()); //second    
}; 

Но как ни странно, когда моя страница перенаправлена, местоположение совершенно неверно.

Первые console.log печатает /oneMinuteMetric/loadCapturedMetrics?&timestamp=1467976859092&tagName=TestTag

и второй console.log также печатает /oneMinuteMetric/loadCapturedMetrics?&timestamp=1467976859092&tagName=TestTag

в то время как в моем окне браузера путь является /oneMinuteMetric/loadCapturedMetrics?tagName=TestTag&timestamp=1468143868308%2F%3FtagName%3DTestTag

«%2F%3FtagName%3DTestTag» получить добавляется сам по себе, а затем мой запрос отклонен как плохой запрос сервером. Мы использовали этот метод для перенаправления в нескольких местах, но, как ни странно, он здесь не работает. Зачем?

PS: Местоположение моей веб-страницы: /oneMinuteMetric/tagHistory?tagName=TestTag. Это, когда нажата кнопка, и данная функция выполнена

Решение: $ location.url (путь) работает в этом случае.

+0

попробуйте это: location.href = путь, это дает вам такое же поведение? –

+0

Я только что протестировал его с помощью пути//MinuteMetric/loadCapturedMetrics? & Timestamp = 1467976859092 & tagName = TestTag', и он отлично работает для меня. – Chinni

+0

Вы имеете в виду, что мне нужно заменить '$ location.path (path);' с 'window.location.href = path'? –

ответ

2

Используйте $location.search(), чтобы добавить параметры запроса.

$location.path("/oneMinuteMetric/loadCapturedMetrics"); 
$location.search({'timestamp' : tokenAt, 'tagName' : $stateParams.tagName }); 

Когда вы передаете массив в $location.search() он перекроет существующий компонент параметра запроса.

В вашем случае, параметр запроса «% 2F% 3FtagName% 3DTestTag» по-прежнему существует из текущего URL, потому что $location.path() будет обновлять только пути и не будет изменять/переопределение компонент параметра запроса.

+0

Спасибо, что объяснили это. Ваше решение работает! Хотя я пошел с $ location.url (путь). –

+0

Это полезно. https://developer.mozilla.org/en-US/Learn/Common_questions/What_is_a_URL –

0

$location.url(path) работает в этом случае.