所以我正在尝试使用带有ngOptions的select字段来填充它。但每当我选择某些东西时,我在ngModel中使用的变量都会变为未定义。
这是我的HTML:
<select ng-options="name as operator.name for operator in vm.operators track by operator.value" ng-model="vm.oper"></select>
我的打字稿:
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;
选择字段显示正常,HTML中的值似乎正确。但是当我选择任何值时,“oper”变得不确定
我看不出是什么导致这种情况,它应该是简单的吗?
答案 0 :(得分:2)
尝试使用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>
答案 1 :(得分:0)
尝试将vm.oper
初始化为vm.operators[0]
?我认为您的vm.oper
为空,因此当您的<select>
尝试更新ngModel
时,它实际上会更新其范围ngModel而不是父范围
答案 2 :(得分:0)
正如@JoazitoPolo建议我必须用&#34; operator.value替换我的选项字符串作为vm.operators中运算符的operator.name&#34;因为&#34;名称&#34;未定义它每次都返回undefined。因此,&#34; as&#34;之前的部分是什么实际插入到select的值字段中,我认为&#34;是什么&#34;跟踪&#34;是为了。我完全误读了ngOptions的文档:)