在AngularJS中,动态从后台获取下拉框的值是一个常见的需求,这通常涉及到与服务器的交互以及数据绑定。在本例中,我们将探讨如何使用AngularJS的`$http`服务来获取数据,并通过`ng-repeat`指令动态生成下拉框选项。 1. **$http服务**:AngularJS的`$http`服务是用于与服务器通信的主要工具。在这个例子中,`serviceData.getData`函数应该是一个封装了$http服务的自定义服务。它以`'inforinput/getAllSelectValueByType'`作为请求URL,`'POST'`作为请求方法,以及包含`type`参数的对象作为请求数据,向后台发送请求。 ```javascript $scope.getDyActivityInforItems = function() { serviceData.getData('inforinput/getAllSelectValueByType', 'POST', { type: 2 }) .then(function(json) { if (json.code == 0) { $scope.poslist = json.content; } }, function(json) { console.log(json); }); }; ``` 2. **数据绑定**:一旦从后台获取到数据,将其赋值给`$scope.poslist`。这个变量会被用作`ng-repeat`指令的数据源,动态生成下拉框的选项。每个选项的值由`select_code`属性表示,显示的文本则由`select_name`属性决定。 ```html <select class="fillIn select-able" ng-model="selectedPos" id="dutLevel_view_1" name="dutLevel"> <option ng-repeat="x in poslist" value="{{x.select_code}}">{{x.select_name}}</option> </select> ``` 3. **保持选中状态**:当下拉框的选项发生变化时,例如新增了一个选项,需要确保已选中的值不被改变。在更新`poslist`之后,可以通过设置`ng-model`的值来保持当前选中的选项。这里使用`$timeout`和`$apply`来确保视图的更新,因为`$apply`通常在AngularJS的外部(如回调函数)使用,用于手动触发脏检查。 ```javascript addInfo.addInfoView.positionRank = 0; // 设置初始值 $scope.poslist = json.content; // 更新选项列表 setTimeout(function() { $scope.$apply(function() { addInfo.addInfoView.positionRank = yuanPos; // 设置新的选中值 }); }, 1000); ``` 4. **ng-selected 指令**:在HTML中,使用`ng-selected`指令可以设置下拉框初始选择的项。不过,在这个例子中,它被用来指定`addInfo.addInfoView.positionRank`的值,确保页面加载或数据更新后,下拉框的选中状态保持不变。 ```html <select class="fillIn select-able" ng-selected="addInfo.addInfoView.positionRank" ng-model="addInfo.addInfoView.positionRank" id="dutLevel_view_1" name="dutLevel"> <option ng-repeat="x in poslist" value="{{x.select_code}}">{{x.select_name}}</option> </select> ``` 总结,这个例子展示了如何在AngularJS中利用$http服务获取后台数据,然后通过`ng-repeat`指令将数据动态渲染为下拉框的选项。同时,我们还学习了如何在数据更新后保持选中项不变,以及在非AngularJS执行环境中使用`$apply`来同步模型和视图。这是一套完整的实现从后台动态获取并展示下拉框值的方法。
- 粉丝: 3
- 资源: 973
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助