mam to dwa przyciski w moim HTML:history.pushState nie działa kontroler
<a href="" class="sbtn sbtn-default" ng-click="GoToNext()"><i class="fa fa-angle-right"></i> Next </a>
<a href="" class="sbtn sbtn-default" ng-click="GoToPrev()"> Prev <i class="fa fa-angle-left"></i></a>
następnie w moim kontrolera:
$scope.GoToNext = function() {
var nextPage = getNextPage("next");
history.pushState(null, "Site Title", nextPage);
getQuestion();
}
$scope.GoToPrev = function() {
var prevPage = getNextPage("prev");
history.pushState(null, "Site Title", prevPage);
getQuestion();
}
i funkcji getNextPage brzmi:
function getNextPage(type) {
var querystr = window.location.pathname.split('/')[4];
var currentQuestion = querystr.split("-")[1];
var currentBook = querystr.split("-")[0];
switch (type) {
case "next":
return ((currentBook + "-") + (+currentQuestion + +1));
case "prev":
if (currentQuestion == 1)
return (currentBook + "-1");
return ((currentBook + "-") + (+currentQuestion - +1));
}
};
Mój adres URL wygląda następująco:
http://localhost:14799/app/Dashboard/Question/1-330
funkcja getQuestion tylko uzyskać te dane z serwera, już przetestowane go i zwróci dane bez problemu, faktycznie zwróci dane na stronie obciążenia bez problemu.
Próbuję zmienić adres URL i uzyskać następne lub poprzednie pytanie, klikając te przyciski. ale to, co się dzieje, to wywołanie funkcji getQuestion, ale adres URL się nie zmienia. jeśli uważnie przyjrzę się adresowi URL i zwrócę uwagę, że zmienia się i wraca do poprzedniej strony bardzo szybko, tylko flash!
Nie mam nic w moim kodzie, aby powrócić do poprzedniej strony.
Próbuję dodać konsolę console.log do funkcji getNextPage, aby sprawdzić, czy wywołuje ona dwa razy, ale nie, po prostu dzwoń raz dla każdego kliknięcia.
jeśli próbuję pushState w konsoli, to działa!
Dodaję również log konsoli na końcu funkcji getQuestion, aby sprawdzić, czy utknie w środku funkcji, ale nie! log konsoli dzieje się, ale powraca do poprzedniej strony.
Po prostu desperacko testuję rzeczy, ale bez powodzenia.
To jest dla mnie denerwujące, ponieważ nie używam ngRoute i po prostu używam Angulara dla kilku rzeczy i chcę zrobić jakiś ręczny 'pushState' bezskutecznie. Zauważyłem, owijanie w 'setTimeout' działa, ale' document.location.search' nadal zwraca starą wartość. –