本文最后更新于:2016年11月30日 凌晨
最近手上的 ionic 项目,从左边侧滑的交互方式换到了 tabs 的交互方式。
以前的树形路由需要改造成网状的。
于是开始在网上搜索有没有现成的技术方案,找了一圈下来发现,ionic 的社区里都是一些没法解决的回复。
但是自己翻看 ui-router 的时候发现 guide 里面是有网状路由设计的。
看逻辑图
上代码:state 里面新加一个状态
1 2 3 4 5 6 7 8 9
| .state("other", { url: "/other", abstract: true, controller: "OtherCtrl", template: "<ion-nav-view></ion-nav-view>", onEnter: function($rootScope, fromStateServ) { fromStateServ.setState("other", $rootScope.fromState, $rootScope.fromParams); } })
|
对应的controller
1 2 3 4 5 6 7 8 9 10 11
| .controller("OtherCtrl", function($scope, $state, fromStateServ) { $scope.backNav = function() { var fromState = fromStateServ.getState("other"); if (fromState.fromState !== undefined) { $state.go(fromState.fromState.name, fromState.fromParams); } else { $state.go("app.xxx"); } }; })
|
保留 history 的公共方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| .factory("fromStateServ", function() { return { data: {}, setState: function(module, fromState, fromParams) { this.data[module] = { "fromState": fromState, "fromParams": fromParams }; }, getState: function(module) { return this.data[module]; } }; })
|