AngularJs:选择在使用ng-repeat时不显示任何选项的下拉列表

AngularJs: Select dropdown not showing any options while using ng-repeat

本文关键字:显示 任何 选项 下拉列表 ng-repeat 选择 AngularJs      更新时间:2023-09-26

这是形式:它有两个文本字段和一个选择下拉字段

<form class="ui form" name="personalInfoForm" ng-repeat="obj in users">
    <div class="field">
    <div class="two fields">
        <div class="field ui right icon input">
            <input  id="id_first_name"
                    placeholder="Reference Number"
                    name="{{ obj.name }}"
                    type="text"
                    ng-model="user.first_name" required/>
            <i  ng-show="personalInfoForm.first_name.$valid && personalInfoForm.first_name.$dirty"
                class="tiny green checkmark icon"></i>
            <i  ng-show="personalInfoForm.first_name.$invalid && personalInfoForm.first_name.$dirty"
                class="tiny red remove icon"></i>
        </div>
        <div class="field ui right icon input">
            <input  id="id_last_name" placeholder="Date [dd-mm-yyyy]"
                    name="{{ obj.date }}"
                    type="text" ng-model="user.date" required/>
            <i  ng-show="personalInfoForm.last_name.$valid && personalInfoForm.last_name.$dirty"
                class="tiny green checkmark icon"></i>
            <i  ng-show="personalInfoForm.last_name.$invalid && personalInfoForm.last_name.$dirty"
                class="tiny red remove icon"></i>
        </div>
    </div>
</div>
<div class="field">
    <select class="ui dropdown" name="gender" ng-model="user.gender" required>
        <option ng-repeat="val in obj.gender" value="{{val}}">{{val}}</option>
    </select>
    <i  ng-show="personalInfoForm.gender.$valid && personalInfoForm.gender.$dirty"
        class="tiny green checkmark icon"></i>
    <i  ng-show="personalInfoForm.gender.$invalid && personalInfoForm.gender.$dirty"
        class="tiny red remove icon"></i>
</div>
<input  ng-disabled="personalInfoForm.$invalid" ng-show="!hasFormBeenEdited" ng-click="update(user)"
        value="Go to next step"
        class="ui right floated blue button"
        type="submit"/>
<input  ng-disabled="personalInfoForm.$invalid" ng-click="maintainUsers(user)"
        value="Enter another item"
        class="ui right floated blue button"
        type="submit"/>
</form>

这是我控制器中的数据:

    var forms = {
        name: "first_name",
        date: "date",
        gender: ["debtor", "Male", "Female"]
    };
    $scope.users = [forms];

但是,它会显示检查器中的所有选项,以及额外的选项:

<option value="? undefined:undefined ?"></option>

在顶部! 我不明白这段代码有什么问题!

您可以通过这种方式为您的选择选择默认值

<select class="ui dropdown" name="gender" ng-model="user.gender" 
    ng-options="val as val for val in obj.gender"
    required>
</select>

并在控制器中,为此选择指定默认值

    $scope.user = {gender: forms.gender[0]};

出现未定义的值是因为最初没有与选项中的值绑定任何内容。此外,我建议您使用ng-options而不是ng-repeat。

代码是这样的,

    <select class="ui dropdown" name="gender" ng-model="user.gender" ng-options = "val as val for val in obj.gender" required>
    <option value="">Choose an option</option>
</select>

"选择一个选项"是为了摆脱出现在选择值中的空选项。