<h1>{{header}}</h1> <!-- This Back button has multiple option --> <!-- In home page it will show menu --> <!-- In other views it will show back link --> <a ng-href="{{back.url}}">{{back.text}}</a> <div ng-view></div>
在我的模块配置
$routeProvider. when('/',{ controller:HomeCtrl,templateUrl:'home.html' }). when('/menu',{ controller:MenuCtrl,templateUrl:'menu.html' }). when('/items',{ controller:ItemsCtrl,templateUrl:'items.html' }). otherwise({ redirectto:'/' });
控制器
function HomeCtrl($scope,$rootScope){ $rootScope.header = "Home"; $rootScope.back = {url:'#/menu',text:'Menu'}; } function MenuCtrl($scope,$rootScope){ $rootScope.header = "Menu"; $rootScope.back = {url:'#/',text:'Back'}; } function ItemsCtrl($scope,$rootScope){ $rootScope.header = "Items"; $rootScope.back = {url:'#/',text:'Back'}; }
正如你可以看到在我的控制器,我有硬编码的后退按钮url和文本(实际上,我不需要文本使用图像)。这样,在某些情况下,我发现后退按钮导航不正确。我不能使用history.back()coz我的后退按钮更改为主视图中的菜单链接。
所以我的问题是如何获得以前的路由路径在控制器或更好的方式来实现这一点?
我创建了一个Plunker演示我的问题。请检查。
该替代方案还提供后退功能。
原文链接:https://www.f2er.com/angularjs/146127.html模板:
<a ng-click='back()'>Back</a>
模块:
myModule.run(function ($rootScope,$location) { var history = []; $rootScope.$on('$routeChangeSuccess',function() { history.push($location.$$path); }); $rootScope.back = function () { var prevUrl = history.length > 1 ? history.splice(-2)[0] : "/"; $location.path(prevUrl); }; });