我的html中有两个按钮:
<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函数只是从服务器获取数据,我已经测试了它并且它没有问题地返回数据,实际上它在页面加载时返回数据没有问题。
我要做的是更改网址,点击这些按钮获取下一个或上一个问题。但是发生的事情是调用getQuestion函数但URL没有改变。如果我非常仔细地查看URL并注意它会变得非常快速地回到上一页,只需一瞬间!
我的代码中没有任何内容可以返回上一页。
我尝试在getNextPage函数中添加console.log以查看它是否调用了两次,但它没有,它只是为每次点击调用一次。
如果我在控制台中尝试pushState,它可以工作!
我还在getQuestion函数的末尾添加了控制台日志,看它是否卡在函数的中间,但没有!控制台日志正在发生,但它返回上一页。
我只是拼命地测试东西,但没有运气。
答案 0 :(得分:1)
我不需要$scope.GoToNext
或$scope.GoToPrev
进行导航,因为angular会自动为我做这件事。只需改变路线及其完成。一切正常。
答案 1 :(得分:-2)
pushState
。请改为History.js
。