将数据库的默认选项加载到选定的选项

时间:2017-07-18 15:30:08

标签: javascript angularjs

我有一个加载简单选择的函数,如:

function cargarCatalogo() {
            apiService.get("../../api/Catalogo/GetCatalogoPadre/" + $scope.Catalogo + "/",
                null,
                function(res) {
                    $scope.Catalogos = res.data;
                    $scope.selected = $scope.Catalogos[0];
                   inicial
                    $scope.filtro($scope.selected);
                },
                errorCatalogo);
        }

正如您所看到的,我选择第一个选项作为默认选项$scope.selected = $scope.Catalogos[0];问题是我不希望选择该选项我希望选择数据库值,因为我正在使用编辑视图。

我的表是这样的:

+--------+----------+---------+
|     ID |  Nombre  | PadreID |
+--------+----------+---------+
|      1 | KENWORTH |       0 |
|      2 | VOLVO    |       0 |
|      3 | T6000    |       2 |
|      4 | T800     |       1 |
+--------+----------+---------+

如果我编辑寄存器T6000,我会在select中收到KENWORTHVOLVO,但PadreID等于2,所以我想要一个默认选项是2?我需要改变什么选择值?此致

HTML:

<select class="form-control" ng-hide="Catalogos.length==0" ng-change="filtro(selected)" ng-model="selected" ng-options="item.Nombre for item in Catalogos "></select>

$scope.selected = $scope.Catalogos[0];结果:

enter image description here

2 个答案:

答案 0 :(得分:0)

如果您拥有所需选择项的ID,则可以使用ng-options="item.Codigo as item.Nombre for item in Catalogos "> ng-model的{​​{1}}将select保留Codigo,用户将查看显示Nombre

你可以尝试这个吗? <select class="form-control" ng-hide="Catalogos.length==0" ng-change="filtro(selected)" ng-model="selected.Codigo" ng-options="item.Codigo as item.Nombre for item in Catalogos"></select>

答案 1 :(得分:0)

我个人觉得语法ng-options难以阅读和理解,我总是首选使用ng-repeatng-bindng-value和{{1}实现类似的结果。以下是使用替代方法实现此目的的方法:

ng-selected

我不确定您是如何设置选择的选项,但要使用<select class="form-control" ng-hide="Catalogos.length==0" ng-change="filtro(selected)" ng-model="selected"> <option ng-repeat="item in Catalogos" ng-bind="item.Nombre" ng-value="item.Codigo" ng-selected="item.ID === object.ID"></option> </select> ,您需要当前ng-selected中的任何属性才能评估为true与另一个值相比。

ngSelected docs:https://docs.angularjs.org/api/ng/directive/ngSelected