angularjs - пользовательский интерфейс не отображается должным образом ($ stateProvider)

0

Я пытаюсь настроить приложение. Он работал нормально, но затем мне пришлось изменить некоторые URL-адреса на u-router, чтобы иметь некоторые под-представления.

К сожалению, теперь я не вижу всех своих страниц правильно, и я не понимаю, почему.

Вот пример: http://codepen.io/anon/pen/LNQavV?editors=1010

В принципе, у меня разные шаблоны, и когда изменяется URL-адрес, я показываю другой шаблон в представлении appContent. Внутри моих деталей, мне нужно иметь подвид под названием zone, в которой я могу отобразить detailsOverview шаблон или detailsEdit шаблон.

С моей текущей настройкой я не могу изменить страницу. Ну, страница меняется в соответствии с URL, но detailsOverview всегда отображается всегда!

Я думаю, что проблема как-то связана с подвью, а не с URL-адресами, но не на 100% уверен.

Я также вставляю здесь код $ StateProvider:

angular.module('ionicApp', ['ionic']).config([
  '$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
    $stateProvider.state('app', {
      name: 'app',
      url: '/app',
      abstract: true,
      templateUrl: 'templates/menuTemplate.html'
    }).state('app.details', {
      name: 'appDetails',
      url: '/:zoneID',
      views: {
        'appContent': {
          templateUrl: 'templates/mainDetails.html'
        }
      }
    }).state('app.details.overview', {
      name: 'appDetailsOverview',
      url: '/details',
      views: {
        'appContent': {
          templateUrl: 'templates/mainDetails.html'
        },
        'zone': {
          templateUrl: 'templates/detailsOverview.html'
        }
      }
    }).state('app.details.edit', {
      name: 'appDetailsEdit',
      url: '/edit/day/:timerEditDay',
      views: {
        'appContent': {
          templateUrl: 'templates/mainDetails.html'
        },
        'zone': {
          templateUrl: 'templates/detailsEdit.html'
        }
      }
    }).state('app.setup', {
      name: 'setup',
      url: '/setup',
      views: {
        'appContent': {
          templateUrl: 'templates/setup.html'
        }
      }
    }).state('app.about', {
      name: 'about',
      url: '/about',
      views: {
        'appContent': {
          templateUrl: 'templates/about.html',
          controller: 'aboutPageInfo'
        }
      }
    });
    $urlRouterProvider.otherwise('app/');
  }
]);
Теги:
angular-ui-router

1 ответ

1
Лучший ответ

Проблема в том, что с url: '/:zoneID', в состоянии app.details вы "проглатываете" все возможные параметры.

Это означает, что URL-адрес url #/app/about и #app/setup также обрабатываются приложением app.details и, похоже, не работают.

Чтобы заставить их работать, вы должны определить состояние app.about и app.setup до состояния app.details:

$stateProvider.state('app', {
  name: 'app',
  url: '/app',
  abstract: true,
  templateUrl: 'templates/menuTemplate.html'
}).state('app.setup', {
  name: 'setup',
  url: '/setup',
  views: {
    'appContent': {
      templateUrl: 'templates/setup.html'
    }
  }
}).state('app.about', {
  name: 'about',
  url: '/about',
  views: {
    'appContent': {
      templateUrl: 'templates/about.html',
      controller: 'aboutPageInfo'
    }
  }
}).state('app.details', {
  name: 'appDetails',
  url: '/:zoneID',
  views: {
    'appContent': {
      templateUrl: 'templates/mainDetails.html'
    }
  }
}).state('app.details.overview', {
  name: 'appDetailsOverview',
  url: '/details',
  views: {
    'appContent': {
      templateUrl: 'templates/mainDetails.html'
    },
    'zone': {
      templateUrl: 'templates/detailsOverview.html'
    }
  }
})

Смотрите обновленный код с рабочей информацией и страницей настройки: http://codepen.io/anon/pen/BKPyMd?editors=1010

  • 0
    С вашего обновленного пера, почему он работает с настройкой, а не с о, даже если о до детали также? Спасибо за объяснение, я сейчас просто пытаюсь понять немного лучше :)
  • 0
    Да, страница «О программе» не работает. Я не смотрел на эту проблему ... :)
Показать ещё 1 комментарий

Ещё вопросы

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