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

У меня есть угловое приложение с вложенными пользовательскими интерфейсами. На главной странице у меня есть подменю с двумя ссылками, которые отображаются на главной странице. У меня есть Menu1, который отображает список и хотел бы, чтобы этот список отображался по умолчанию при загрузке страницы. У меня также есть Menu2, который отображает другой список после нажатия, но это не вид по умолчанию.

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

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

app.js

$stateProvider
  .state('/', {
    url: '/index',
    templateUrl: '/index',
    controller: 'indexCtrl'
  })
  .state('/main', {
    url: '/main',
    templateUrl: 'main',
    controller:   'mainCtrl'
  })
  .state('/main.menu1', {
    url: '/menu1',
    templateUrl: "menu1",
    controller: 'menu1Ctrl'
  })
  .state('/main.menu2', {
    url: '/menu2',
    templateUrl: "menu2",
    controller: 'menu2Ctrl'
  });

контроллеры

app.controller('menu1Ctrl', ['$scope', function($scope) {
    $scope.livenow = [
    { name: 'user1',
    status: 'online'
    },
    { name: 'user2',
    status: 'online'
    },
    { name: 'user3',
    status: 'online'
    },
    { name: 'user4',
    status: 'online'
    },
    { name: 'user5',
    status: 'online'
    }
    ];
}]);
app.controller('menu2Ctrl', ['$scope', function($scope) {
$scope.livenow = [
{ name: 'user6',
    status: 'offline'
    },
    { name: 'user7',
    status: 'online'
    },
    { name: 'user8',
    status: 'offline'
    },
    { name: 'user9',
    status: 'online'
    },
    { name: 'user10',
    status: 'offline'
    }
    ];
}]);

main.html

<div class="section2 col-md-12">
    <div class="row">
        <div class="section2nav col-md-offset-4 col-md-4">
            <a ui-sref='/main.menu1'> menu1 </a> | <a ui-sref="/main.menu2"> menu2 </a>
            <ui-view></ui-view>
        </div>
    </div>

1 ответ

Решение

Вы хотите удалить косую черту в каждом состоянии. Например,

.state('/main', { должно быть .state('main', {

Другие вопросы по тегам