Another way to think about this is to just have ng-class set the css class of the attributes when a property is set to true. Then have an ng-click that set's that property. Some pseudo code would be as follows:
<ul>
<li ng-repeat='item in model.items' ng-class='{selected: item.selected, otherStyle: item.otherBooleanProperty}' ng-click='item.selected = true'>{{
item.name}}</li>
<ul>
....
Somewhere in a controller have the following defined:
function Controller($scope){
$scope.model ={};
$scope.model.items = [
{selected: false, otherBooleanProperty: true, name: 'aName'},
{selected: false, otherBooleanProperty: true, name: 'aName1'},
{selected: false, otherBooleanProperty: true, name: 'aName2'},
{selected: false, otherBooleanProperty: true, name: 'aName3'}
];
}
Hope this helps gives you a different perspective on how to solve a problem like this.
PS and if you need to have all of the other items unselected then change ng-click to call a function in the controller to 1) loop through all of the items and set the 'selected' property to false, and then 2) set the passed in item's selected value to true. (ex: ng-click = 'clearSelection(item)')
-Bill