angularjs - select 中未设置初始 ng-model 值

标签 angularjs html-select selection

我有一个枚举(我使用 TypeScript 进行编码):

export enum AddressType
{
    NotSet = 0,

    Home = 1,
    Work = 2,
    Headquarters = 3,

    Custom = -1,
}

然后在我的 Controller 中,我有一个名为 type 的字段,我在其中设置应在选择输入中选择的初始值(我将其设置为 AddressType.Headquarters)。

最后,在 HTML 中我添加了以下内容:

<select ng-model="Ctrl.type" ng-options="addressType for addressType in Ctrl.getAddressTypes()"></select>

一切似乎都工作正常,除了一件事:由于某种原因,在更新所有绑定(bind)后,Angular 最初不会在选择中选择“3”(总部)。 Angular 创建了一个像这样的额外选项:

<option value="?" selected="selected"></option>

由于某种原因,Angular 无法计算出在组合中选择的初始选项。

如果用户选择组合框的另一个选项,Ctrl.type 会正确更新,因此该部分的绑定(bind)工作正常。基本上我的问题只是最初应该选择的选项没有按预期选择。

我在这里缺少什么导致了这个问题?

最佳答案

发现问题:

Ctrl.getAddressTypes() 返回的数组是一个字符串数组:

["0", "1", "2", "3", "1"]

并且 Ctrl.type 中存储的内容是数字类型。

AngularJS 使用“===”运算符将提供给 ng-options 的数组与提供给 ng-model 的值进行比较。在这种情况下 3 不等于“3” - 这就是它不起作用的原因。

关于angularjs - select 中未设置初始 ng-model 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20201628/

相关文章:

javascript - curl:-d 和 --data-binary 选项有什么区别?

javascript - Angular $routeParams : get query parameter as array

angularjs - 在 Apache 上哪里安装 Angular?

php - 是否可以使用 PHP 将 HTML SELECT/OPTION 值设为 NULL?

java - 如何从 JTable 单元格内的 JTable 中获取选定的单元格?

mysql - 从 mysql 表中选择加权随机分布

javascript - 将数据推送到对象angularjs

javascript - angular.js自动完成选择选项不会触发其他模型

css - 如何设置选择框选项的宽度?

javascript - 如何取消选择 Monaco Editor 中的所有内容