Tôi có này hai nút trong html của tôi:history.pushState không làm việc trong điều khiển
<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>
sau đó trong bộ điều khiển của tôi:
$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();
}
và chức năng getNextPage là:
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));
}
};
Url của tôi trông giống như sau:
http://localhost:14799/app/Dashboard/Question/1-330
chức năng getQuestion chỉ nhận được của dữ liệu từ máy chủ, tôi đã thử nghiệm nó ra và nó trả lại dữ liệu với không có vấn đề, trên thực tế nó trả lại dữ liệu ở tải trang với không có vấn đề.
điều tôi đang cố gắng làm là thay đổi URL và nhận câu hỏi tiếp theo hoặc trước đó bằng cách nhấp vào các nút đó. nhưng những gì đang xảy ra là nó gọi hàm getQuestion nhưng URL không thay đổi. nếu tôi nhìn rất gần với URL và chú ý nó sẽ thay đổi và trở lại trang trước rất nhanh, chỉ cần một đèn flash!
Tôi không có gì trong mã của mình để trở về trang trước.
những gì tôi thử là thêm console.log vào hàm getNextPage để xem nó có gọi hai lần hay không, nhưng không, nó chỉ gọi một lần cho mỗi lần nhấp.
nếu tôi cố gắng pushState trong bảng điều khiển, nó hoạt động!
Tôi cũng thêm nhật ký bảng điều khiển ở cuối hàm getQuestion để xem liệu nó có bị kẹt ở giữa chức năng không, nhưng không! Nhật ký bàn điều khiển đang diễn ra nhưng nó trở về trang trước.
Tôi chỉ thử nghiệm một cách tuyệt vọng, nhưng không may mắn.
Điều này gây phiền toái cho tôi vì tôi không sử dụng ngRoute và chỉ sử dụng Angular cho một vài thứ và muốn thực hiện một số lệnh 'pushState' không có sẵn. Tôi đã nhận thấy gói trong một công việc 'setTimeout', nhưng' document.location.search' vẫn trả về giá trị cũ. –