Подтвердить что ты не робот

AngularJS - Как изменить состояние изнутри контроллера

Я новичок в AngularJS и хотел бы знать, как я изменяю состояние изнутри контроллера.

Например, я обычно изменяю состояние нажатием кнопки:

<input type="submit" class="btn btn-lg btn-primary btn-block" value="Log In" ui-sref="main.navigation"/>

Итак, при отправке кнопки моя страница изменится на страницу навигации. Это прекрасно работает, но что, если я сначала хочу сделать некоторую логику в своем контроллере, а затем основать результаты, я бы хотел перейти на определенную страницу. Как это сделать из контроллера, в отличие от нажатия кнопки.

Вот мои modules.js на случай, если вам интересно:

angular.module('ecsMain', [
    'ui.router',
    'ui.bootstrap',
    'ngTable'
])
.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
    $urlRouterProvider.otherwise('main/login');

    $stateProvider
        .state('main', {
            abstract: true,
            url: '',
            templateUrl: 'view/main.html'
        })
        .state('main.login', {
            url: '',
            controller: ECSMainController,
            templateUrl: 'view/login.html'
        })
        .state('main.phoneCalls', {
            url: '',
            controller: AccordionDemoCtrl,
            templateUrl: 'view/phoneCalls.html'
        })
        .state('main.navigation', {
            url: '',
            controller: ModalDemoCtrl,
            templateUrl: 'view/navigation.html'
        })
        .state('main.myModalContent', {
            url: '',
            controller: ModalDemoCtrl,
            templateUrl: 'view/myModalContent.html'
        })
        .state('main.alertMessage', {
            url: '',
            controller: ModalDemoCtrl,
            templateUrl: 'view/alertMessage.html'
        })
}]);

Спасибо

4b9b3361

Ответ 1

введите $state сервис вашему контроллеру, затем в свой контроллер...

CONTROLLER

$scope.changeState = function () {
    $state.go('where.ever.you.want.to.go', {stateParamKey: exampleParam});
};

и добавьте ng-click к вашей кнопке

HTML

<button ng-click="changeState()">Change State</button>

Ответ 2

вы можете использовать часть resolve вашего состояния.

$stateProvider
    .state('main', {
        templateUrl: 'view/example.html',
        controller: 'Controller',
        resolve: {
          stuff: function(){
             return doSomethingThatReturnsAPromise();
          }
        }
    })

Таким образом вы можете динамически вводить stuff в свой контроллер, чтобы вы могли справиться с возвращаемым значением при загрузке