如何在选择下拉列表中填充选项值
How to populate the options value in select dropdown
我正在尝试解决选择元素上的一个奇怪的错误。出于某种原因,下拉列表顶部始终有一个黑色选项。
我在 html 中有这样的东西。
此元素包含在我的测试控制器中。
<select ng-model="vm.pickTest">
<option ng-repeat="test in vm.tests"
ng-selected="test.id === vm.pickTest.id">{{test.title}}</option>
</select>
内部测试控制器
//init controller codes...
vm.pickTest = {'id':'id1', 'title':'title1'}
vm.tests = [
{'id':'id1','title':'title 1'},
{'id':'id2','title':'title 2'},
{'id':'id3','title':'title 3'},
]
因此,当页面首次加载时,默认情况下它将预先选择'title 1
'。出于某种原因,我可以在下拉列表中看到一个空白选项,例如:
(blank)
title 1 <---pre-selected
title 2
title 3
我试过使用
<select ng-model="vm.pickTest">
<option value="" style="display: none;">test</option>
<option ng-repeat="test in vm.tests"
ng-selected="test.id === vm.pickTest.id">{{test.title}}</option>
</select>
正如其他帖子所建议的那样,但仍然没有运气。我也不想使用ng-option
,因为我的代码中有其他限制。谁能帮我解决这个问题?真的很烦人。多谢!
尝试改用ng-options
。这是文档。
我完全同意@aup和@Brad。最好使用 ng 选项。
但是如果你确实对ng-option
的使用有限制,你可以使用以下技巧。
jsfiddle上的活生生的例子。
angular.module('ExampleApp', [])
.controller('ExampleController', function() {
var vm = this;
vm.tests = [{
'id': 'id1',
'title': 'title 1'
}, {
'id': 'id2',
'title': 'title 2'
}, {
'id': 'id3',
'title': 'title 3'
}, ];
vm.pickTest = vm.tests[0];
})
.directive('convertToObject', function() {
return {
require: 'ngModel',
scope:{
convertToObject:"="
},
link: function(scope, element, attrs, ngModel) {
ngModel.$parsers.push(function(val) {
for(var i=0;i<scope.convertToObject.length;i++)
{
if(scope.convertToObject[i].id===val)
return scope.convertToObject[i];
}
return null;
});
ngModel.$formatters.push(function(val) {
return val.id;
});
}
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="ExampleApp">
<div ng-controller="ExampleController as vm">
<select ng-model="vm.pickTest" convert-to-object="vm.tests">
<option ng-repeat="test in vm.tests" value="{{test.id}}">{{test.title}}</option>
</select>
<pre>{{vm.pickTest|json}}</pre>
</div>
</div>
更多关于$parsers和$formatters的信息。
相关文章:
- 如何将CSS(特别是填充/边距)应用于select下拉菜单的选项或optgroup
- 使用jquery在选择框中的选项中填充数据
- 解析和填充 jQuery 插件的选项数组
- 动态下拉列表选项在添加多列后未填充
- 使用 ajax 填充选择时没有选定的默认选项的问题
- 使用数组中的选项填充选择菜单
- 如何填充下拉列表,从javascript中的另一个下拉列表中排除任何一个选项
- 创建唯一选项,然后使用 JavaScript 填充多个选择
- 通过遍历JSON文件来填充数据列表选项
- JSON记录中的Sencha填充选项卡
- 如何在选择下拉列表中填充选项值
- 动态创建选择元素并从 SharePoint 列表填充选项
- 动态填充选项在搜索框(选择)bootstrap jquery
- 如何在承诺后用angular ui-select填充选项
- 在angular auth0中包括预填充选项
- 自动填充选项在没有明显原因的情况下消失或重新出现
- html select-用JavaScript填充选项text/值
- asp:DropDownList通过javascript填充选项,不使用clientSideId
- 使用javascript选中复选框时,填充选项列表
- 选择在动态填充选项时更新占位符文本