对Angular和html下拉菜单感到困惑

时间:2017-01-13 01:12:48

标签: html angularjs drop-down-menu

有一个令人沮丧的时间试图解决这个问题。 尝试使用下拉菜单替换3个复选框。

复选框完美无缺。更新用户时,它会正确提供数据库的数据,当您再次返回编辑时,它会根据您之前选择的内容检查正确的框。下拉菜单不是这种情况。我似乎无法让它发挥作用。它不会自动选择下拉列表中保存的值,当我在下拉列表中选择一个值并保存时,它不会被写入数据库。我使用了复选框代码中的所有信息,所以我不确定它为什么不能工作。

我喜欢DROPDOWN v2.0的简单性,但是我需要在角色中添加文本。就像在复选框和下拉列表v1.0中一样。甚至可以在ng-option中使用吗?

CHECKBOX

<div ng-repeat="role in ctrl.userRoleEdits">
    <div class="checkbox checkbox-inline">
        <input id="role{{role.Id}}" type="checkbox" name="role{{role.Id}}" ng-model="role.Selected" />
        <label for="role{{role.Id}}" class="short">{{role.Name}}</label>
    </div>
</div>

DROPDOWN v1.0

<select class="form-control">
    <option ng-repeat="role in ctrl.userRoleEdits" id="role{{role.Id}}" name="role{{role.Id}}" ng-model="role.Selected">{{role.Name}}</option>
</select>

DROPDOWN v2.0

<select class="form-control" ng-model="role.Selected" ng-options="role as role.Name for role in ctrl.userRoleEdits track by role.Id"></select>

1 个答案:

答案 0 :(得分:1)

... Emmmm

我相信角色。选择角色身份......

如果是这样的话:

对于DROPDOWN v1.0,ng-model应该保留这样的标签:

    <select class="form-control" ng-model="role.Selected">
        <option ng-repeat="role in ctrl.userRoleEdits" value="role.Id" id="role{{role.Id}}" name="role{{role.Id}}">{{role.Name}}</option>
    </select>

2017-01-13 10:25编辑:添加value="role.Id"

2017-01-13 10:27

在DROPDOWN v2.0中,ng-model需要匹配userRoleEdits对象之一。然后它会显示所选的。

这意味着userRoleEdits中的对象是否像:

{
    Id: 1,
    Name: 'role 1'
}

然后对于DROPDOWN v2.0,role.Selected应该是相同的结构。 Id和Name都应该相同,以便下拉列表将其显示为所选。