我正在使用AngularJS,并尝试使用数组中包含的选项来设置选择保管箱字段,并由最终用户通过输入框将其添加。我已经将$ scope成功添加到数组,但是下拉选择框仅对所有选项显示“未定义”。
我一直在寻找类似的答案,但没有一个能专门解决我的错误,或者正在使用无济于事的Angular 2 +。
<select class="form-control" id="maidOfHonor" ng-model="name"
ng-options="names.value as names.value for name in names">
</select>
$scope.names = [
{
name: "Position Not Filled",
value: "Position Not Filled"
}
];
$scope.addName = function() {
$scope.names.push({ name: this.party.addName, value: this.party.addName });
console.log($scope.names);
}
理想情况下,我希望将通过$ scope.addName()函数添加的任何“名称”作为值或名称(当然不是未定义的)添加到下拉选择框中。
答案 0 :(得分:3)
在我看来,您的问题是ng-options
语法。
代替:
ng-options="names.value as names.value for name in names"
尝试
ng-options="name.value as name.name for name in names"
name.value
是要从ng-model
获取或设置的值。
name.name
是显示为选项文本的值。
请注意,引用的变量以name
开头,而不是原始代码中的names
。
答案 1 :(得分:0)
您可以尝试ng-repeat
,它比ng-options
相对容易
这是工作中的fiddle