123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- function checkState(check, state){
- var setTo = check;
- var states = state.get();
- var foundAlternative = false;
- var currentState = state.current;
-
- if (!currentState.views){
- return setTo;
- }
-
- var checkView = setTo+'_'+Object.keys(currentState.views)[0];
-
- for (var i=0;i<states.length;i++){
- if (states[i].name == setTo){
- return setTo;
- }
- if (states[i].name == checkView){
- foundAlternative = true;
- }
- }
-
- if (foundAlternative){
- return checkView;
- }else{
- return setTo;
- }
- }
-
- angular.module('ionicUIRouter', [])
-
- .config([
- '$provide', '$stateProvider',
- function($provide, $stateProvider) {
-
- function $StateDecorator($state) {
-
- $state.__go = $state.go;
-
- $state.go = function(to, params, options){
- to = checkState(to, $state);
- return $state.__go(to, params, options);
- }
-
- return $state;
-
- }
-
- $provide.decorator('$state', ['$delegate', $StateDecorator]);
-
- $stateProvider.__state = $stateProvider.state;
-
- $stateProvider.state = function(statename, data){
-
- if (data.views){
-
- var numKeys = 0;
- for (var key in data.views){
- numKeys++;
- if (numKeys > 1){
- for (var key in data.views){
- var copy = {};
- angular.copy(data, copy);
- copy.views = {};
- copy.views[key] = data.views[key];
- copy.url = '/'+key+data.url;
- $stateProvider.__state(statename+'_'+key, copy);
- }
- return $stateProvider;
- }
- }
- }
-
- $stateProvider.__state(statename, data);
-
- return $stateProvider;
- }
-
- }])
-
- .directive('uiSref', function($state){
- return {
- restrict: 'A',
- priority: -1,
- link: function(scope, element, attrs){
- attrs.uiSref = checkState(attrs.uiSref, $state);
- }
- }
- })
-
- ;
|