Angular:在使用ng-options生成的select中未保留选定值

时间:2015-06-05 08:21:33

标签: javascript angularjs

我有使用ng-options

生成的下拉列表
<select class="form-control"  ng-options="item.value as item.label for item in filterFields track by item.value" ng-model="selectedFilterField">
</select>

问题在于,当我从此dropwon中选择一个选项时,所选项目显示为空,并且下拉列表中会添加一个额外的空白元素。我做错了什么?

编辑:添加控制器代码:

$ scope.columns = accountColumns;

    $scope.filterFields = [];

    $scope.filterFields.push(defaultSelectOption);
    $scope.filterFieldValues.push(defaultSelectOption);

    var idx = 1;

    for(i=0; i < accountColumns.length; i++) {
        var option = {label: accountColumns[i], value: accountColumns[i]};
        $scope.filterFields.push(option);
    }
    $scope.selectedFilterField = $scope.filterFields[0];

1 个答案:

答案 0 :(得分:0)

假设您的filterFields数组包含如下所示的对象:

{
    name: "",
    value: 0
}

在你的ng-options中,你告诉angular,select的可能值是这些对象的数组。但你也告诉角度,当你选择一个选项时,真正的值是object.value;所以现在angular看到这个值不存在于选项数组中并试图添加它或什么。

最初下拉列表有效,因为您将ng-model设置为filterFields数组中的完整对象。

试试这个:

ng-options="item for item in filterFields track by item.value"