var demo = angular.module('demo', []);
demo.directive('userGroupSwitcher', function() {
return {
restrict: 'E',
replace: true,
transclude: false,
template: '<form class="userGroup"><label for="userGroupSelect">Select a Group</label><select ng-model="currentGroup" ng-options="o.value as o.label for o in myGroups" /><input type="button" ng-click="applyNewGroup(currentGroup)" value="Switch Group"/></form>'
};
});
function MyCtrl ($scope, $rootScope) {
$rootScope.myGroups = [
{label:'Admin', value:1},
{label:'Users', value:2},
{label:'Public', value:3}
];
$scope.$on("new group", function(obj, value) {
console.log("Global group switched to " + JSON.stringify(value));
});
$scope.applyNewGroup = function (currentGroup) {
$rootScope.$broadcast("new group", currentGroup);
};
}
<div ng-app='demo' ng-controller='MyCtrl'>
<p>You've just selected {{group}}.</p>
<user-group-switcher />
</div>
form.userGroup {
width: 300px;
height: auto;
border: 2px solid black;
background-color: lightyellow;
}
form.userGroup label {
margin-left: 10px;
color: blue;
}
External resources loaded into this fiddle: