Reputation: 7656
I have this sidebar.html:
<ul id="menu-sidebar">
<li class="has_sub" ng-repeat="menu in menus | filter: filterTier | filter: filterRole">
<a ng-if="menu.url != '#'" ui-sref="{{ menu.url }}" class="waves-effect" ui-sref-active="active subdrop">
<i class="fa fa-{{ menu.icon }}"></i> <span> {{ menu.name }}</span>
</a>
<a ng-if="menu.url == '#'" class="waves-effect" ui-sref-active="active subdrop" href="#">
<i class="fa fa-{{ menu.icon }}"></i> <span> {{ menu.name }}</span>
</a>
<ul class="list-unstyled" ng-if="menu.sub_menus.length > 0">
<li ng-repeat="submenu in menu.sub_menus">
<a ui-sref="{{ submenu.url }}" ui-sref-active="active">{{ submenu.name }}</a>
</li>
</ul>
</li>
</ul>
And my appController.js:
$scope.menus = [{name: 'Customers', url: 'customers', icon: 'users', tier: 1, role: 1},
{name: 'Settings', url: '#', icon: 'gear', tier: 1, role: 1,
sub_menus: [{name: 'Admin', url: 'settings.admin'}, {name: 'Outlet', url: 'settings.outlet'} ]
}];
Those code above will produce sidebar menu.
Yes above code is worked perfectly.
I've got 2 questions:
As above I need to repeat my <a>
tag and hide it manually if it '#' because it always return me an error if I put #
or blank inside ui-sref = {{menu.url}}
How can I create my sidemenu only once?. Right now my controller will load the $scope.menus
every time the page is loaded (I define it as appController and put it on my body tag so it always return me those menu).
Thanks in advance!
Upvotes: 3
Views: 181
Reputation: 2173
$( document ).ready(function() {
//your code
})/
Upvotes: 1