 <p>The answer to my question, which is not evident here, is that I had an extra closing div in my first tab. It was closing out the ng-if and then there was broken mark-up.</p> <p>My code looked like this:</p> <pre><code>&lt;div ng-if="tab[0].active"&gt; &lt;div&gt; Content 1, true by default. Hides and shows as nav is toggled. &lt;/div&gt; **&lt;/div&gt;** &lt;/div&gt; &lt;div ng-if="tab[1].active"&gt; Content 2, false by default. Never shows as nav is toggled. &lt;/div&gt; </code></pre> <p>The ng-if was not closing at the right spot - so despite the $scope updating, the html was broken. So. annoying.</p>