如何修复$ scope select options数组中的未定义结果?

时间:2019-05-26 21:49:06

标签: javascript arrays angularjs

我正在使用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()函数添加的任何“名称”作为值或名称(当然不是未定义的)添加到下拉选择框中。

2 个答案:

答案 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