Use links to change ng-switch
How would I use links to trigger an ng-switch?
My current html:
<ul class="nav nav-list bs-docs-sidenav affix sidenav">
<li><a href="#" ng-click="page='resources'">Resources</a></li>
<li><a href="#" ng-click="page='users'">Users</a></li>
</ul>
<div ng-switch on="page">
<div ng-switch-when="resources">
<h1>resources Div</h1>
</div>
<div ng-switch-when="users">
<h1>Users</h1>
</div>
<div ng-switch-default>
<h1>Default</h1>
</div>
</div>
Мой контроллер:
function Ctrl($scope) {
$scope.page = 'users';
}
Что мне не хватает?
2 ответа
Я наткнулся на похожую проблему и решил ее, используя объект, а не свойство в области видимости, чтобы значения не переопределялись директивой ng-switch.
Разница между заданным вопросом и этим решением заключается в том, что я не изменяю значение страницы в пределах области действия ng-switch.
Объявите объект nav в контроллере
$scope.nav = {
page : 1
}
HTML
<div ng-switch="nav.page">
<div ng-switch-when="1">
First page
<a href="#" ng-click="nav.page=2">Resources</a>
</div>
<div ng-switch-when="2">
Second page
<a href="#" ng-click="nav.page=3">Resources</a>
</div>
<div ng-switch-when="2">
Third page
</div>
Вы должны привязать свой контроллер к элементу верхнего уровня. Вот скрипка
HTML:
<div ng-app ng-controller="Ctrl">
<ul class="nav nav-list bs-docs-sidenav affix sidenav">
<li><a href="#" ng-click="page='resources'">Resources</a></li>
<li><a href="#" ng-click="page='users'">Users</a></li>
</ul>
<div ng-switch on="page">
<div ng-switch-when="resources">
<h1>resources Div</h1>
</div>
<div ng-switch-when="users">
<h1>Users</h1>
</div>
<div ng-switch-default>
<h1>Default</h1>
</div>
</div>
</div>