我正在构建一个网站,这是一个具有多个 View 的单页网站。我正在使用 angularJS 来处理后端通信。
现在我在顶部有一个菜单栏,如果我点击它,旧页面应该向左滑动,淡出, View 改变, View 向右滑动,同时淡入. 虽然这一切都很好,但由于某种原因,路径更改不起作用。我的代码:
(MainController.js 的一部分)
$scope.goToPage = function(pageId){
if(!$scope.animatingMainContent){
$scope.animatingMainContent = true;
$("#viewTitle").css({opacity: 1});
$("#viewTitle").animate({opacity: 0}, {duration: 500, queue: false});
$("#viewContainer").animate({left: "-200px", opacity: 0.1}, {duration: 500, complete: function(){
$location.path("/"+pageId).replace();
console.log($location.url());
$("#viewContainer").css("left", "200px");
$("#viewTitle").animate({opacity: 1}, {duration: 500, queue: false});
$("#viewTitle").html($scope.pageTitles[pageId]);
$("#viewContainer").animate({left: 0,opacity: 1}, {duration: 500, complete: function(){
$scope.animatingMainContent = false;
$location.path("/"+pageId).replace();
}});
}});
}
}
(菜单栏)
<strong class="ribbon-content">
<a ng-click="goToPage('about');">About Me</a> | <a ng-click="goToPage('portfolio');">Portfolio</a> | <a ng-click="goToPage('contact');">Contact</a>
</strong>
所以,事情是,当我转到一个页面时,它会获取以前的路径。你从“关于我”开始。假设我要单击“投资组合”、“联系方式”、“关于我”,我会看到:关于我、投资组合。联系人,当 View 加载时。但是控制台会说:
"/portfolio"
"/contact"
"/about"
最佳答案
$location.path(...).replace()
位于 jQuery 事件处理程序(动画完成函数)中。您需要为 Angular 调用 $scope.$apply()
以获取更改。
关于javascript - angularjs $location.path.replace 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22533177/