Это потому, что вы используете один единственный экземпляр PancelCtrl
для трех панелей. Таким образом, директива никогда не знает, какую панель следует переключать, потому что она не указана нигде.
У вас есть два различных варианта:
Создать один экземпляр для каждого элемента li
:
<!-- (you have to remove 'data-ng-controller="PanelCtrl"' from 'div.subfooter') -->
<li data-ng-controller="PanelCtrl">
<a ng-click="toggle()" href="#">Panel A</a></a>
<div data-panel-trigger data-visible="visibility" class="panel span2">
<p>Panel Content</p>
</div>
</li>
<li data-ng-controller="PanelCtrl">
<a ng-click="toggle()" href="#">Panel B</a>
<div data-panel-trigger data-visible="visibility" class="panel span2">
<p>Panel Content</p>
</div>
</li>
<li data-ng-controller="PanelCtrl">
<a ng-click="toggle()" href="#">Panel C</a>
<div data-panel-trigger data-visible="visibility" class="panel span2">
<p>Panel Content</p>
</div>
</li>
Делая это, вы будете иметь три PanelCtrl
экземпляров, и каждый из них будет включать или дочерний элемент, отвечает на него.
Другой вариант - проверить, какая панель находится рядом с нажатой ссылкой (с помощью jQuery это делается с чем-то вроде $(this).siblings("div")
). Но я думаю, что первый будет более подходящим, так как вы инкапсулируете поведение кода для каждой панели, которую хотите добавить на сайт.
Удачи вам!
http://docs.angularjs.org/guide/directive просто прочитайте все это, особенно * Объект определения директивы -> область * – Yoshi
Да, документация - первое, на что я смотрел, но это довольно запутанный материал. Примеры всегда лучше для меня, поэтому я обращаюсь к SO. – Jon