选择使用ngOptions将undefined返回到ngModel

时间:2016-10-07 11:17:45

标签: javascript angularjs typescript

所以我正在尝试使用带有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”变得不确定

我看不出是什么导致这种情况,它应该是简单的吗?

3 个答案:

答案 0 :(得分:2)

尝试使用operator代替nameoperator.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的文档:)