问题
Can anyone help me with a ng-option issue, I am trying to have ng-option created dynamically. What I am doing is pretty complex but I tried to explain it in following link I have two drop downs the first one has values like county, municipality and district based on whats selected in first drop down box the second drop down box will have either county or municipality or districts populated. but the trick is that the json for county or district or municipality have different structure so the ng-option for the second drop down has to be dynamic. please help
<div ng-controller="myCtrl">
<select id="FeatureTypeDropdown" class="form-control input-sm" ng-model="factory.geography.featuretype" ng-options="ft as ft.type for ft in featuretype" ng-change="SimpleMethod(featuretype.selected)">
<option value="">Select a Feature Type...</option>
</select>
<select id="Select1" class="form-control input-sm" ng-model="factory.geography.county" ng-options="c as c.CountyName for c in County" multiple>
<option value="">Select a Feature...</option>
</select>
</div>
ang
ular.module("myApp",[])
.controller("myCtrl",function($scope){
$scope.featuretype = [
{ type: 'County' },
{ type: 'Municipality'},
{ type: 'District'}
];
$scope.County = [{ CountyName: 'C1', countyNumber: '01' }, { CountyName: 'C2', countyNumber: '02' }, { CountyName: 'C3', countyNumber: '03' }, { CountyName: 'C4', countyNumber: '04' }];
$scope.Municipality = [{ MunicipalityName: 'M1', MunicipalityNumber: '01' }, { MunicipalityName: 'M2', MunicipalityNumber: '02' }, { MunicipalityName: 'M3', MunicipalityNumber: '03' }];
$scope.Districts = [{ DistrictsName: 'D1', DistrictsNumber: '01' }, { DistrictsName: 'D2', DistrictsNumber: '02' }, { DistrictsName: 'D3', DistrictsNumber: '03' }];
});
visit http://jsfiddle.net/LfEMw/3/
thanks
回答1:
Like this?
Example
HTML
<div ng-controller="myCtrl">
<select id="FeatureTypeDropdown" class="form-control input-sm" ng-model="option1" ng-options="ft as ft.type for ft in featuretype">
<option value="">Select a Feature Type...</option>
</select>
<select id="Select1" class="form-control input-sm" ng-model="factory.geography.county" ng-options="c as c[option1.displayName] for c in option1.data" multiple>
<option value="">Select a Feature...</option>
</select>
</div>
JS:
angular.module("myApp",[])
.controller("myCtrl",function($scope){
$scope.County = [{ CountyName: 'C1', countyNumber: '01' }, { CountyName: 'C2', countyNumber: '02' }, { CountyName: 'C3', countyNumber: '03' }, { CountyName: 'C4', countyNumber: '04' }];
$scope.Municipality = [{ MunicipalityName: 'M1', MunicipalityNumber: '01' }, { MunicipalityName: 'M2', MunicipalityNumber: '02' }, { MunicipalityName: 'M3', MunicipalityNumber: '03' }];
$scope.Districts = [{ DistrictsName: 'D1', DistrictsNumber: '01' }, { DistrictsName: 'D2', DistrictsNumber: '02' }, { DistrictsName: 'D3', DistrictsNumber: '03' }];
$scope.featuretype = [
{ type: 'County', data:$scope.County, displayName:'CountyName' },
{ type: 'Municipality', data:$scope.Municipality, displayName:'MunicipalityName'},
{ type: 'District', data:$scope.Districts, displayName:'DistrictsName'}
];
});
来源:https://stackoverflow.com/questions/26518220/angularjs-dynamic-ng-option-to-link-two-drop-downs