0

Я пытаюсь сделать простой маршрут перенаправления с помощью $state. Я не могу заставить его работать. Вот мой код:

angular.module('starter', ['ionic', 'starter.controllers', 'starter.services', 'ng-token-auth']) 

.run(function($ionicPlatform, $location, $rootScope, $state) { 
    $ionicPlatform.ready(function($state) { 

    $rootScope.$on('auth:login-success', function($state) { 
     console.log('success event triggered yo main'); 
     // $location.path('main'); 
     $state.go('main'); 
    }); 

    }); 
}) 

.config(function($stateProvider, $urlRouterProvider, $authProvider) { 
    $stateProvider 

    // setup an abstract state for the tabs directive 

    .state('main', { 
    url: '/main', 
    templateUrl: 'templates/main.html' 
    }) 

    .state('home', { 
    url: '/home', 
    templateUrl: 'templates/home.html' 
    }) 
    // if none of the above states are matched, use this as the fallback 
    $urlRouterProvider.otherwise('/home'); 

}); 

Это дает мне следующую ошибку:.

ionic.bundle.js:25642 TypeError: $state.go is not a function 
    at app.js:28 
    at Scope.$broadcast (ionic.bundle.js:29477) 
    at ng-token-auth.js:191 
    at ionic.bundle.js:23384 
    at processQueue (ionic.bundle.js:27879) 
    at ionic.bundle.js:27895 
    at Scope.$eval (ionic.bundle.js:29158) 
    at Scope.$digest (ionic.bundle.js:28969) 
    at Scope.$apply (ionic.bundle.js:29263) 
    at done (ionic.bundle.js:23676) 

Я попытался удалить $ состояние от $ rootScope $ на, но я получил эту ошибку:

ionic.bundle.js:25642 TypeError: Cannot read property 'go' of undefined 
    at app.js:28 
    at Scope.$broadcast (ionic.bundle.js:29477) 
    at ng-token-auth.js:191 
    at ionic.bundle.js:23384 
    at processQueue (ionic.bundle.js:27879) 
    at ionic.bundle.js:27895 
    at Scope.$eval (ionic.bundle.js:29158) 
    at Scope.$digest (ionic.bundle.js:28969) 
    at Scope.$apply (ionic.bundle.js:29263) 
    at done (ionic.bundle.js:23676) 

Как это исправить?

ответ

1

Попробуйте удалить аргумент $state из $rootScope.$on. Я думаю, что это должно быть:

$rootScope.$on('auth:login-success', function() { 
     console.log('success event triggered yo main'); 
     // $location.path('main'); 
     $state.go('main'); 
}); 

Пропустив $state в качестве аргумента вы, по сути это сделать:

$rootScope.$on('auth:login-success', function($state) { 
     var $state; 
     console.log('success event triggered yo main'); 
     // $location.path('main'); 
     $state.go('main'); //undefined... 
}); 

Вам может понадобиться это от $ionicPlatform.ready(function($state) {..., а также. Вы определяете функции обратного вызова ... не проходящие в $state. То, что вы думаете, происходит не так.

+0

Спасибо. Я пробовал это, но он все еще не работает. Я обновил свой вопрос, чтобы включить новое сообщение об ошибке, которое я получаю, когда пытаюсь это сделать. – Philip7899

+0

Вы удалили его из $ ionicPlatform? – inspired

+0

Спасибо, я получил его для работы в $ rootScope сейчас, но я не могу заставить его работать внутри определенных маршрутов. Например, внутри «.state» я хочу вызвать $ state, чтобы я мог перенаправить, если пользователь не вошел в систему. Есть идеи? Я собираюсь отметить вас по этому вопросу, а затем отправить еще один вопрос по этому вопросу. – Philip7899

0

Вам необходимо установить зависимость для ui.router модуля:

angular.module('starter', ['ionic', .... , 'ui.router']) 
+0

Он уже включен в ионную – Philip7899

Смежные вопросы