如何删除初始空白选项并选择<option>使用 ng-repeat 或 ng-options 时的值? [英] How to remove initial blank option and select <option> value when using ng-repeat or ng-options?

查看:28
本文介绍了如何删除初始空白选项并选择<option>使用 ng-repeat 或 ng-options 时的值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

角度新手.过滤通过dataservice返回的json数据,过滤通过下拉菜单完成.我想做的是组合的事情:

  1. 我想删除通过 Angular 返回的初始空白值;
  2. 我还想让它在默认情况下预先选择一个不是包含在我的数据对象中(在我的情况下,返回所有对象,通过我的 html 添加为 select option);和
  3. 我希望在页面呈现.

我可以删除初始空白,但无法将其合并到我包含的选项中.

我已经研究过使用 ng-repeatng-options 执行此操作,并且可以通过 将默认值设置为我的 json 中的对象之一>ng-options,但这似乎不允许我添加数据中不存在的选项.由于我没有返回所有值的组(并且认为最好不要这样做,因为它会使我的数据文件更大),因此将其添加为选项似乎是最好的方法.

有很多关于如何删除为 Angular 返回的空白值的线程(例如 清空下拉列表中的第一个元素Angular JS 从选择选项中删除空白选项等).我还看到了如何通过 ng-init 预先选择一个值,但这似乎要求该值是我的数据对象的一部分,而不是通过 select option 正如我所做的那样.此外,我看到了如何通过 ng-options(例如 http://ng-learn.org/2013/11/Draw_a_select_with_default_option/) 但这似乎不允许我添加将返回所有数据对象的数据值.当我将 ng-selected='true' 添加到我的选项数据值时,它似乎在页面加载时被选中,但随后该值消失并且选择下拉列表呈现为 ng-原始 每个开发人员工具.不知道我错过了什么.

在这里工作.照原样,它具有初始空白,但您可以再次看到,当页面首次加载时,下拉列表中显示了全部显示",但它消失了.同样,我想删除空白并选择该选项作为默认值,并将其显示在下拉列表中,以便人们知道正在渲染.

感谢您的帮助!

html:

<div><form action="">团体:<select name="groups" id="grp" ng-model="groupid" ng-change="selectGroup()"><option value="0" ng-selected="true">显示全部</option><option ng-repeat="option in groups" value="{{option.ID}}" ng-selected="$first">{{option.name}}</选项></选择></表单>

<div><form action="">资产:<select name="assets" id="assets" ng-model="selectedAsset"><option ng-repeat="option in assets | filter: myFilter" value="{{option.ID}}">{{option.driverName}}</option></选择></表单>

过滤器:

$scope.myFilter = function(val, i, a) {如果($scope.groupid==0){返回真;};var m = 假;var grp = angular.fromJson($scope.selectedGroup);angular.forEach(grp.members, function(v, k){if(val.vpkDeviceID == v.vpkDeviceID){m = 真;}}, m);返回 m;};$scope.selectedAsset = {};$scope.groupid = 0;$scope.selectedGroup = {};$scope.selectGroup = function(){var grp = [];angular.forEach($scope.groups, function(v,i){if($scope.groupid == v.ID){$scope.selectedGroup = v;}})}

json:

<代码>{资产":[{"deviceName": "车辆 25",vpkDeviceID":352964050744425,司机姓名":迈克史密斯"},{"deviceName": "车辆 52",vpkDeviceID":352599041910352,"driverName": "John Doe"},{"deviceName": "车辆 11",vpkDeviceID":862170016156711,司机姓名":莎拉·约翰逊"},{"deviceName": "车辆 28",vpkDeviceID":862193020453528,"driverName": "Eleanor Petit"}],组":[{ID":1,名称":内罗毕",成员":[{vpkDeviceID":352964050744425},{vpkDeviceID":352599041910352},{vpkDeviceID":8621700161},6{"ID": 2, "name": "karen", "members": [{"vpkDeviceID": 352964050744425}, {"vpkDeviceID": 352599041910352}]},{"ID": 3, "name": "langata", "members": [{"vpkDeviceID": 352599041910352}, {"vpkDeviceID": 862170016156711}, {"vpkDeviceID": 8621930204045}352{"ID": 4, "name": "downtown", "members": [{"vpkDeviceID": 352964050744425}, {"vpkDeviceID": 862170016156711}]},{"ID": 5, "name": "westlands", "members": [{"vpkDeviceID": 862193020453528}]}]}

解决方案

解决方案很简单:使用 ng-options,并绑定到对象而不是 ID.将一个带有空值的选项添加到选择中,以显示您的全部显示"选项.

这是一个更新的 plunkr:http://plnkr.co/edit/E8I6D6Ti3Kzw1eukuRBQ?p=preview

关键部分:


                
            
发送“验证码”获取 | 15天全站免登陆