我有一个枚举(我使用 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/