I have two dependent dropdowns. One shows countries another states. I would like the first one to save just the country id but use the entire object as source for the second dr
To keep things simple you can restructure your model as below where the keys act as ids:
$scope.countries = {
"c1" : {
label : "Country 1",
states:{
"s1":{
label:"State 1"
},
"s2" : {
label:"State 2"
}
}
},
"c2" : {
label:"Country 2",
states:{
"s3":{
label:"State 3"
},
"s4" : {
label:"State 4"
}
}
}
};
HTML
<select ng-model="country" ng-options="countryId as countryDetails.label
for (countryId, countryDetails) in countries">
</select>
<select name="state" ng-model="state" ng-options="stateId as stateDetails.label
for (stateId, stateDetails) in countries[country]['states']">
</select>
If by duplicate temporary variables(countrySource)
, you mean to use the same models for other dropdowns, selecting a country would change the options of all the country
and state
dropdowns on the page.