喜欢AngularJs,但目前仍停留在大多数应用程序应该具有的典型场景中。然而,在研究/玩了将近6个小时后,我找不到解决方案!
基本上,我的表单有两个下拉列表和'区域'选择区域后选择选项加载:
<div class="form-group">
<label>Regions</label>
<select class="form-control" ng-model="selectedRegion.Id" ng-options="r.Id as r.Description for r in regions" ng-change="GetAreas(selectedRegion.Id)">
<option value="">Please select a region..</option>
</select>
</div>
<div class="form-group">
<label>Areas</label>
<select class="form-control" ng-model="selectedArea.Id" ng-options="a.Id as a.Description for a in areas">
<option value="">Please select an area..</option>
</select>
</div>
在我的控制器中,首先我得到父模型,让我们说#34;客户&#34;保存在之前的“创建”中。视图。此客户模型具有RegionId和AreaId,当加载上述“编辑”时,看,我需要被选中。
我通过这个JS代码实现了这个目标:
manageCustomerRepository.getCustomer($routeParams.customerId).then(function(mainDetails) {
$scope.customer = mainDetails;
masterDataRepository.GetRegions().then(function (regionList) {
$scope.regions = regionList;
var index;
for (var i = 0; i < $scope.regions.length; i++) {
var currentRegion = $scope.regions[i];
if (currentRegion.Id === parseInt($scope.customer.RegionId)) {
index = i;
break;
}
}
$scope.selectedRegion = $scope.regions[index];
});
masterDataRepository.GetAreas($scope.customer.RegionId).then(function (areaList) {
$scope.areas = areaList;
var index;
for (var i = 0; i < $scope.regions.length; i++) {
var currentArea = $scope.areas[i];
if (currentArea.Id === parseInt($scope.customer.AreaId)) {
index = i;
break;
}
}
$scope.selectedArea = $scope.areas[index];
});
});
当加载编辑视图时,我能够获取区域的所有区域和区域,并从客户对象获取RegionId和AreaId,并选择正确的选项。但是,我似乎无法更改所选区域。选中的选项=&#39;已选中&#39;属性没有改变,我无法让他们改变价值!
另外,我不完全确定当我使用ng-model =&#39; selectedRegion.Id&#39;和selectedArea.Id,我的角度控制器中会有一个客户对象。
感谢任何帮助!