Reputation: 1081
In this plunk I have an Angular UI dropdown. Is there a way NOT to repeat the ng-click in each <a>
element?
HTML
<div class="btn-group" uib-dropdown>
<button id="btn-append-to-body" type="button" class="btn btn-primary"
uib-dropdown-toggle>
{{selection}} <span class="caret"></span>
</button>
<ul class="dropdown-menu" uib-dropdown-menu="" role="menu"
aria-labelledby="btn-append-to-body">
<li role="menuitem">
<a href="#" ng-click="selectItem('1')">The first item</a>
</li>
<li role="menuitem">
<a href="#" ng-click="selectItem('2')">Another item</a>
</li>
<li role="menuitem">
<a href="#" ng-click="selectItem('3')">Yet another item</a>
</li>
</ul>
Upvotes: 1
Views: 2411
Reputation: 4410
this plunker shows how to use a global ng-click (passing the source $event
) and selecting the data-value
attribute as selected value :
<ul class="dropdown-menu" ng-click="selectItem($event)" uib-dropdown-menu="" role="menu" aria-labelledby="btn-append-to-body">
<li role="menuitem">
<a href="#" data-value="1" >The first item</a>
</li>
<li role="menuitem">
<a href="#" data-value="2">Another item</a>
</li>
<li role="menuitem">
<a href="#" data-value="3">Yet another item</a>
</li>
</ul>
The selectItem()
function , getting the data-value property of selected anchor (ev.target
):
$scope.selectItem = function(ev) {
$scope.selection = ev.target.dataset.value
};
Upvotes: 2
Reputation: 2637
If I understood you correctly you can write like below with ng-repeat
Controller Code:
//Your controller logic
$scope.selectItems = ["First Item", "Another Item", "One More Item"]
//some more logic in your controller
HTML View
<ul class="dropdown-menu" uib-dropdown-menu="" role="menu" aria-labelledby="btn-append-to-body" ng-repeat="(key, value) in selectItems ">
<li role="menuitem">
<a href="#" ng-click="selectItem('key')">{{value}}</a>
</li>
</ul>
as I don't have access I can't able to update your plunker
Upvotes: 0