Ionic $state.go не переходит к новому представлению

Я пытаюсь использовать $state.go для события ng-click кнопки. Навигация не происходит, но я получаю следующую ошибку:

Error: Could not resolve 'selectContacts' from state 'tab.settings' Я использовал это раньше, но не в приложении с вкладками, в этом проблема? Я чувствую, что это будет очень простое исправление, но я изо всех сил пытаюсь определить его, основываясь на документации.

Из контроллеров.js

.controller('SettingsCtrl', function ($scope, $state, $stateParams) {
    $scope.goToContactsPage = function () {
        $state.go('selectContacts');
    }
})

Из app.js

.config(function($stateProvider, $urlRouterProvider) {
    $stateProvider
    // setup an abstract state for the tabs directive
    .state('tab', {
        url: '/tab',
        abstract: true,
        templateUrl: 'templates/tabs.html'
    })

    .state('tab.settings', {
        url: '/settings',
            views: {
                'tab-settings': {
                    templateUrl: 'templates/tab-settings.html',
                    controller: 'SettingsCtrl'
            }
        }
    })
    .state('selectContacts', {
        url: '/selectContacts',
         views: {
             'selectContacts': {
                 templateUrl: 'templates/selectContacts.html',
                 controller: 'ContactsCtrl'
             }
         }
     });

Кнопка:

<button class="button button-full button-positive" ng-click="goToContactsPage()">Select Contacts</button>

person anthonyhumphreys    schedule 30.10.2015    source источник
comment
Это опечатка .state(selectContacts' исправь.   -  person michelem    schedule 30.10.2015
comment
будет ли комментарий @Michelem не очевиден при загрузке app.js? Смотрите консоль.   -  person ergonaut    schedule 30.10.2015
comment
Извините, просто опечатка в моем вопросе, этого нет в моем коде .... ой!   -  person anthonyhumphreys    schedule 30.10.2015


Ответы (1)


Это из-за вашего свойства views в конфигурации маршрута.

views: {
   'selectContacts': {
      templateUrl: 'templates/selectContacts.html',
      controller: 'ContactsCtrl'
   }
}

Я удалил его и заменил на это:

.state('selectContacts', {
      url: "/selectContacts",
      templateUrl: "templates/contact.html",
      controller: 'ContactsCtrl'
    });

Проверьте этот Codepen http://codepen.io/nampdn/pen/BoVweN

person Nam Pham    schedule 30.10.2015
comment
Благодарю вас! Вы спасли мой рассудок :D - person anthonyhumphreys; 30.10.2015