Yes, another nested view problem! Here’s the scenario: A multiple tab app that as it’s home page features a dashboard with a user profile and activity summary, both of which are retrieved from different ajax calls.
So to start, here’s my state definitions for the main home tab:
.state('tab', {
url: "/tab",
abstract: true,
templateUrl: "templates/nav.html",
// The tab requires user login
data: {
requiresLogin: true
}
})
.state('tab.dash', {
url: '/dash',
views: {
'dashboard': {
templateUrl: 'templates/dashboard.html'
}
}
})
.state('tab.dash.profile', {
url: '/profile',
views: {
'profile': {
templateUrl: 'templates/profile.html',
controller: 'ProfileCtrl'
}
}
})
.state('tab.dash.summary', {
url: '/summary',
views: {
'summary': {
templateUrl: 'templates/summary.html'
}
}
})
…and here’s my templates:
Dashboard:
<ion-view title="Dashboard">
<ion-content class="has-header padding">
<h1>Dashboard</h1>
<div ui-view name="profile"></div>
<div ui-view name="summary"></div>
</ion-content>
</ion-view>
Summary:
<h1>Summary details here</h1>
User Profile:
<div class="list card">
<div class="item item-avatar">
<img src="http://www.bungie.net{{profile.profilePicturePath}}">
<h2>{{ profile.displayName }}</h2>
<p>Joined {{ profile.firstAccess | date : 'mediumDate' }}</p>
</div>
</div>
<ul>
<li ng-repeat="(attribute, value) in profile">
{{ attribute }} ({{ value }})
</li>
</ul>
…and of course the index.html fragment that’s holding all the nav bar and main nav view:
<ion-nav-bar class="bar-stable nav-title-slide-ios7">
<ion-nav-buttons side="right">
<button class="button" ng-click="logout()">Logout</button>
</ion-nav-buttons>
</ion-nav-bar>
<ion-nav-view></ion-nav-view>
So what does this render so far? This:

You can see the Dashboard template file is being included, but the nested profile and summary views are not. The placeholder divs are in the markup:

Anyone able to see what I’ve done wrong? (I’m guessing it’s something really silly I’ve just let slip by!)