Angular UI Router, вспомогательные представления сбрасываются после изменения состояния

0

Некоторое время я обсуждал это, но у меня был Plunk, который воспроизводил его.

У меня есть состояние " Контакт ", которое загружается по умолчанию. с $state.transitionTo Внутри этого состояния у меня есть некоторые взгляды, все они загружаются и все работает.

Если я нажму, чтобы изменить состояние на "Домой" по умолчанию или "ui-sref", а в состоянии "Home"/template у меня есть ui-sref="contacts ". Когда мы нажимаем "назад", чтобы установить состояние в контакты, оно должно работать, но теперь все подчиненные представления не вызываются должным образом.

Похоже, что когда ui-sref вызывает состояние, это ведет себя по-другому, когда оно загружается по умолчанию.

Почему $ state.transitionTo(''); похоже, работает иначе, чем ui-sref.

<script>
var myapp = angular.module('myapp', ["ui.router"])
myapp.config(function($stateProvider, $urlRouterProvider){

  // For any unmatched url, send to /
  $urlRouterProvider.otherwise("/")

  $stateProvider
  .state('home', {
    templateUrl: 'home.html',
    controller: function($scope){
    }
  })
  .state('contacts', {
    templateUrl: 'contacts.html',
    controller: function($scope){
    }
  })
  .state('contacts.list', {
    views:{
      "":{
        template: '<h1>Contact.List Working wi no Data defined.</h1>'
      },
      "stateSubView":{
        template: '<h2>StateSubView Working</h2>'
      },
      "absolute@":{
        template: '<h2>Absolute item</h2>'
      }
    }
  });
});
myapp.controller('MainCtrl', function ($state) {
  $state.transitionTo('contacts.list');
})

Q2: Почему тег Absolute, который работает под контактом, когда я добавляю представление в индекс, но не работает, когда он находится в файле contact.html. Абсолютная справочная работа работает только с индексом, а не при вызове везде?

"absolute@":{
            template: '<h2>Absolute item</h2>'
          }
Теги:
angular-ui-router

2 ответа

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

Пустой ui-view работает как wild card и может использоваться для переключения по нескольким маршрутам, даже если у нас есть вложенный элемент. Но если у нас есть вложенный вид contact.list это может быть только доступ, если мы помещаем весь путь в ui-sref="contacts.list", потому что list ребенок contact не может быть доступа только с помощью ui-sref="contacts"

0

Я видел, что в index.html вас есть пустой тег ui-view. Что вы ожидаете туда? Думаю, вы не сможете этого сделать. Маршрутизатор просто не знает, с каким состоянием (дом или контакты) он должен заменить. По-видимому, он выбирает второй (контакты). Я бы предложил поместить url: '/' в исходное состояние, и вы увидите разницу.

Это, безусловно, одна проблема.

Кроме этого: вы не можете просто просматривать представления из контактов.list в контактах afaik.

Ещё вопросы

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