У меня есть эти две кнопки в моем HTML:history.pushState не работает в контроллере
<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>
затем в мой контроллер:
$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();
}
и функции getNextPage является:
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));
}
};
мой адрес выглядит следующим образом:
http://localhost:14799/app/Dashboard/Question/1-330
функция getQuestion просто получить данные с сервера, я уже протестировали его и вернуть данные без проблем, на самом деле вернуть данные на странице загрузки без проблем.
Что я пытаюсь сделать, это изменить URL-адрес и получить следующий или предыдущий вопрос, нажав на эти кнопки. но то, что происходит, вызывает функцию getQuestion, но URL-адрес не изменяется. если я очень внимательно отношусь к URL-адресу и обращу внимание на его изменения, вернемся к предыдущей странице очень быстро, просто вспышка!
У меня нет ничего в своём коде для возврата на предыдущую страницу.
что я пытаюсь добавить console.log в функцию getNextPage, чтобы увидеть, если он вызывает дважды, но это не так, он просто вызывает один раз для каждого щелчка.
если я пытаюсь нажать кнопкуState в консоли, это сработает!
Я также добавляю консольный журнал в конце моей функции getQuestion, чтобы проверить, не застрял ли он в середине функции, но нет! консольный журнал происходит, но он возвращается на предыдущую страницу.
Я просто отчаянно проверяю вещи, но не повезло.
Это раздражает меня, потому что я не использую ngRoute и просто использую Angular для нескольких вещей и хочу сделать ручную 'pushState' безрезультатно. Я заметил, что обертка в 'setTimeout' работает, но' document.location.search' по-прежнему возвращает старое значение. –