$ state.go вызывает загрузку контроллера, но не шаблона

0

У меня есть вызов $ state.go, который запускается после двух вызовов Factory HTTP Post, который перенаправляется на страницу в стиле панели. Однако ни при каких обстоятельствах связанная с ним загрузка файла шаблона, по существу, не загружает белую страницу. Обновление в этот момент вызывает загрузку полной страницы.

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

//pertinent router code
app.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider

  .state('login', {
    url: "/login",
    templateUrl: "js/users/templates/login.html",
    controller: 'LoginController'
  })

  .state('dashboard', {
    url: '/dashboard',
    views: {
      'menuContent' :{
        abstract: true,
        templateUrl: 'js/users/templates/dashboard.html',
        controller: 'DashboardController'
      }
    }
  })

//Segment from LoginController fired by form submit
usersService.usersFactory.authenticate(UserData).then(function successCallback(resp) {
  if (resp !== undefined) {
    $scope.go("dashboard");
  } else {
    //Not a valid login
  }
});
  • 0
    в cache:false keep вашего маршрута cache:false как свойство, чем ваша проблема будет решена. .state('login', { url: "/login", cache:false, templateUrl: "js/users/templates/login.html", controller: 'LoginController' }) : .state('login', { url: "/login", cache:false, templateUrl: "js/users/templates/login.html", controller: 'LoginController' })
Теги:
ionic-framework

2 ответа

1

Насколько я могу судить, есть два вопроса с вашим фрагментом

Определение состояния

views: {
    'menuContent' :{
        abstract: true,
        templateUrl: 'js/users/templates/dashboard.html',
        controller: 'DashboardController'
    }
}

Вы устанавливаете abstract: true свойство abstract: true в своем представлении, что неправильное место для его установки должно быть частью определения состояния. Более того, если вы зададите свое состояние как абстрактное, вы получите исключение, так как абстрактные состояния не могут быть перемещены напрямую. Мое предложение состояло бы в том, чтобы удалить это свойство из вашего штата, так как вам это явно не нужно.

Вы можете больше узнать об абстрактном поведении в документах ui-router

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

Перенаправление штата

usersService.usersFactory.authenticate(UserData).then(function successCallback(resp) {
      if (resp !== undefined) {
        $scope.go("dashboard");
      } else {
        //Not a valid login
      }
    });

Вы ссылаетесь на $scope.go когда это должно быть $state.go.

0

Его $state.go not $scope.go Пожалуйста, используйте следующий код в своем контроллере.

usersService.usersFactory.authenticate(UserData).then(function successCallback(resp) {
  if (resp !== undefined) {
    $state.go("dashboard");
  } else {
    //Not a valid login
  }
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню