Ich habe diese beiden Tasten in meinem html:history.pushState arbeitet nicht in der Steuerung
<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>
dann in meinem Controller:
$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();
}
und die getNextPage Funktion ist:
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));
}
};
meine Url sieht wie folgt aus:
http://localhost:14799/app/Dashboard/Question/1-330
getQuestion Funktion nur die Daten der vom Server erhalten, Getestet habe ich es bereits und es die Daten ohne Probleme zurückgeben, es tatsächlich die Daten auf Seite Last ohne Probleme zurück.
was ich versuche, ist die URL zu ändern und die nächste oder vorherige Frage durch Klicken auf diese Schaltflächen zu erhalten. aber was passiert ist, ruft die Funktion getQuestion auf, aber die URL ändert sich nicht. wenn ich sehr genau auf die URL schaue und darauf achte, dass sie sich ändert und sehr schnell zur vorherigen Seite zurückkehrt, nur ein Blitz!
Ich habe nichts in meinem Code, um zur vorherigen Seite zurückzukehren.
was ich versuche ist console.log in getNextPage Funktion hinzufügen, um zu sehen, ob es zweimal aufrufen, aber es nicht, es nur einmal für jeden Klick aufrufen.
Wenn ich versuche, in der Konsole drücken, funktioniert es!
Ich habe auch am Ende meiner getQuestion-Funktion ein Konsolenprotokoll hinzugefügt, um zu sehen, ob es in der Mitte der Funktion stecken bleibt, aber nein! Konsolenprotokoll wird ausgeführt, aber es wird zur vorherigen Seite zurückgekehrt.
Ich gerade verzweifelt Dinge testen, aber kein Glück.
Das nervt mich, weil ich nicht ngRoute benutze und nur Angular für ein paar Dinge benutze und einige manuelle "PushState" ohne Erfolg machen möchte. Ich habe bemerkt, dass das Wrapping in 'setTimeout' funktioniert, aber' document.location.search' gibt immer noch den alten Wert zurück. –