所以我试图使用ngOptions来填充它的选择字段。但是当我选择某个东西时,我在ngModel中使用的变量就会变成undefined。
这是我的HTML:
<select ng-options="name as operator.name for operator in vm.operators track by operator.value" ng-model="vm.oper"></select>
和我的Typescript:
private operators: Array<any> = [
{
name: 'greater than',
value: '>'
},
{
name: 'less than',
value: '<'
},
{
name: 'equal',
value: '='
},
{
name: 'greater than or equal',
value: '>='
},
{
name: 'less than or equal',
value: '<='
}
];
private oper: any = null;
select字段显示良好,并且HTML中的值似乎是正确的。但是当我选择任意值时"op "就变成undefined
我不知道是什么引起的,它应该很简单,对吗?
尝试使用operator
代替name
或operator.value
<select ng-options="operator.value as operator.name for operator in vm.operators track by operator.value" ng-model="vm.oper"></select>
或
<select ng-options="operator as operator.name for operator in vm.operators track by operator.value" ng-model="vm.oper"></select>
尝试初始化您的vm.oper
到vm.operators[0]
?我认为你的vm.oper
是空的,所以当你的<select>
试图更新ngModel
时,它实际上更新了它的范围ngModel而不是父范围
正如@JoazitoPolo建议的那样,我必须将我的选项字符串替换为"operator "。值作为虚拟机中操作符的名称。因为"name"是未定义的,所以每次都返回未定义。"as"之前的部分实际上是插入到select的值字段中的,我想这就是"track by"的作用。我完全看错了ngOptions的文档:)