我希望用基本json数组中的值填充select选项。
我的例子是国家选择。每个国家/地区都有一个id元素和一个名称以及我可以忽略的其他字段。基本上我想说一个值放在value=""
字段中,另一个值放在<option>tags</option>
html代码段
<div ng-controller="DemoCtrl">
<p>populate select options with ajax</p>
<select id="Country" name="Country" class="form-control" size="10"
ng-model ="chooseCountries">
<option ng:repeat="country in chooseCountries" value="{{country.id}}">
{{country.name}}
</option>
</select>
</div>
javascript代码段
'use strict';
function DemoSelectCtrl($scope) {
$scope.chooseCountries=[
{countryId : 1, name : "France - Mainland", desc: "some description" },
{countryId : 3, name : "Gibraltar", desc: "some description"},
{countryId : 3, name : "Malta", desc: "some description"}
];
});
我把它放在一起 js fiddle ..我想我错过了什么
答案 0 :(得分:3)
在上面的示例中,您遗漏了value
属性更改此value="{{country.countryId}}"
。试试这个
<select id="Country" name="Country" class="form-control" size="10" ng-model ="chooseCountries">
<option ng:repeat="country in chooseCountries" value="{{country.countryId}}">
{{country.name}}
</option>
</select>
并查看示例click here
答案 1 :(得分:3)
angular.module('ui.bootstrap.demo', ['ui.bootstrap'])
- 确保你有ui.bootstrap。阅读如何安装http://angular-ui.github.io/bootstrap/ 答案 2 :(得分:2)
您错过了value
属性,将其更改为country.countryId
。
此外,将ng-model
指令设置为单个countryId值(或国家ID数组)而不是完整对象。
<select id="Country" name="Country" ng-model ="selectedValue">
<option ng:repeat="country in chooseCountries" value="{{country.countryId}}">
...
JS:
function DemoSelectCtrl($scope) {
$scope.selectedValue = 1;
$scope.chooseCountries=[
{countryId : 1, name : "France - Mainland", desc: "some description" },
{countryId : 3, name : "Gibraltar", desc: "some description"},
{countryId : 3, name : "Malta", desc: "some description"}
];
});
答案 3 :(得分:0)
使用对象填充标准select(也可以使用angular-ui-select)的最好方法是使用“ ng-options”指令和使用“ track by id”({{3} }),这在ng-model上效果很好。这是一个如何使用它的示例:
<select id="select_field" name="select_field"
ng-model="vm.selectedCountry"
ng-options="country as country.name for country in vm.chooseCountries track by country.countryId">
<option value="">-- Select Country --</option>
</select>
我必须说,“ vm”是在控制器中定义的“ controllerAs”的情况下,如果直接使用$ scope,则可以删除“ vm”。
这是我发现填充选择字段的最佳方法。