SO my application gets a list of Primary Resources. These JSON objects contain an ID, the Name, and an array of role objects. Each role object has a value and name. When the user selects a the Primary Resource from a select tag, I need another select tag to populate with their role values, as some Primary Resources have multiple roles. It looks right to be, but clearly there is something wrong with it.
HTML:
<div ng-controller="NewTicketCtrl">
<div class="form-group col-xs-4">
<div class="input-group">
<label for="primaryResource"><i class="fa fa-user fa-lg"></i> Primary Resource</label>
</div>
<select class="form-control" id="primary" ng-model="option.primary" ng-options="primary.id as primary.name for primary in primaryResources">
</select>
</div>
<div class="form-group col-xs-4">
<div class="input-group">
<label for="role"><i class="fa fa-briefcase fa-lg"></i> Role</label>
</div>
<select class="form-control" id="role" ng-model="option.role" ng-options="primary.role.value as primary.role.name for primary in primaryResources | filter:{primary:option.primary}">
</select>
</div>
</div>
Controller:
app.controller('NewTicketCtrl', ['$scope', '$http', function($scope, $http){
//Gets data from a JSON file
$http.get('res/formValues.json').success(function(data){
$scope.formValues = data;
//For simplicity purposes, I'm hard coding in the values
$scope.primaryResources = {
"id" : 1,
"name" : "Smith, John",
"role" : [
{
"value" : 1,
"name" : "Technician"
},
{
"value" : 5,
"name" : "Administration"
}
]
},
{
"id" : 2,
"name" : "Smith, Jane",
"role" : [
{
"value" : 1,
"name" : "Technician"
},
{
"value" : 2,
"name" : "Level 2 Technician"
},
{
"value" : 3,
"name" : "Level 3 Technician"
}
]
}
//Used to store values for later use
$scope.option = {
status : $scope.formValues.status[0].value,
priority : $scope.formValues.priority[0].value,
ticketType : $scope.formValues.ticketType[0].value,
workQueue : $scope.formValues.workQueue[0].value,
primary : $scope.formValues.primaryResource[0].id,
role : $scope.formValues.primaryResource[0].role[0].value
};
}).error(function(data){
console.log(data);
});
}]);