Обзор концепции:
У нас есть две вкладки для индекса html. Там мы маршрутизируем эти вкладки следующим образом:
<div ui-view></div>
На второй вкладке есть селектор, который переключает содержимое вкладки в другое ui-представление, подобное этому:
<div ui-view="{{vm.currentView}}"></div>
где vm.currentView - это имя состояния маршрутизации ( "book1" и т.д.).
 .state('tab2', {
        abstract: true,
        templateUrl: 'tab2.html',
        controller: 'Tab2Controller',
        controllerAs: 'vm'
    })
    .state('tab2.content', {
        url: '/tab2',
        views: {
            '': {
                templateUrl: 'tab2.html'
            },
            '[email protected]': {
                templateUrl: 'tab2-book1.html'
            },
            '[email protected]': {
                templateUrl: 'tab2-book2.html'
            },
            '[email protected]': {
                templateUrl: 'tab2-book3.html'
            },
            '[email protected]': {
                templateUrl: 'tab2-book4.html'
            }
        }
    });
Все в порядке, кроме одного: содержимое данных и имя представления изменяются, но содержимое шаблона не является.
Я решил это другим способом (основанным на исключении концепции ui-view внутри другой ui-view и отдельных представлений в состояниях). Но я все еще хочу знать: "Как это сделать, используя концепцию ui-view внутри ui-view?"