当前位置: 首页 > 知识库问答 >
问题:

通过下拉列表中的值-Angularjs选择选项

孙京
2023-03-14

我有一个从数据库中提取下拉选项的工厂:

app.factory('populateDDL', function($http) {
    'use strict';
    return function (tbl,key) {
        var json,
            data = JSON.stringify({
                sKey: key,
                sTableName: tbl
            });
        return $http.post('util.asmx/populateDDL',data).
        then(function(response) {
            return JSON.parse(response.data.d);
        });
    };
});

然后,我将该数据应用于控制器中的下拉列表/选择:

app.controller('userSettings', function($scope, $http, populateDDL) {
            $scope.clinicLocations = new populateDDL('locations',key).
            then(function(response) {
                console.log(response);
                $scope.clinicsDDL = response.locations;
                $http({
                    url: 'util.asmx/returnUser', 
                    method: 'POST',
                    data: {sUserId: uid},  
                })
                .success(function(user) {
                    $scope.user = user.d;
                })
                .error(function(data, status, headers, config) {
                    console.log(data+', '+status+', '+headers+', '+config);
                });
            });
        });

下面是select标记的外观:

<select ng-model="clinicsDDL.item" ng-options="item.name for item in clinicsDDL track by item.id" ngRequired />

放入$scope的下拉列表数据。临床DDL如下所示:

[{
    "id": "19",
    "name": "other clinic"
}, {
    "id": "39",
    "name": "My clinic"
}]

从 DB 返回的用户数据如下所示:

{
    "__type": "User",
    "FirstName": "Erik",
    "LastName": "Grosskurth",
    "DefaultLocationId": "39"
}

在我的控制器中,我填充了下拉列表/选择,然后我获取了一个用户ID并将其提交给DB以获取用户信息。这些用户信息会返回。然后,我想根据DB返回的“DefaultLocationId”从先前填充的列表中选择一个特定的选项。

我该怎么做呢?

$scope.clinicsDDL.item = $scope.clinicsDDL[0];

^^^不起作用,因为我不能依赖数组总是相同的形式。我需要基于“DefaultLocationId”而不是整数来定位数组项。

在jQuery中,您可以使用$('#clinicsDDL option[value="19 " ')来定位选择器。do something();

我以为它会像这样在角度上像这样:

$scope.clinicsDDL.item = $scope.clinicsDDL[value="19"];

^^^,但这也不起作用

共有1个答案

邢小云
2023-03-14

预选仅使用引用。当您要选择一个元素并且不知道哪个字段包含它时,则必须搜索它。而不是使用数组.filter()你应该使用洛达什的查找函数(https://lodash.com/docs#find)

//preselect DefaultLocationId 39
$scope.clinicsDDL.item = _.find($scope.clinicsDDL, {DefaultLocationId : 39});

_.查找(...)将在找不到任何项目时返回undefined。所以您可以不定义它,或者使用默认值,比如

$scope.clinicsDDL.item = _.find($scope.clinicsDDL, {DefaultLocationId : 39}) || $scope.clinicsDDL[0];
 类似资料:
  • 我想在选择另一个select元素的一个选项时显示一个select元素,在选择另一个选项时隐藏它。 这是JavaScript: 感谢任何帮助。谢谢

  • 我有一个目标如下。我必须将其显示为下拉列表: 在我的控制器中,我有一个携带值的变量。该值决定了在下拉列表中默认选择阵列中上述三项中的哪一项: 当我创建下拉表单项时,如下所示: 我面临两个问题: > 而不是 默认情况下,即使我有

  • 问题内容: 我创建了一个客户c#DropDownList控件,可以将其内容呈现为optgroup(不是从头开始,我编辑了一些在Internet上找到的代码,尽管我确切地了解了它的作用),并且工作正常。 但是,我现在遇到一种情况,我需要在下拉菜单中有两个缩进级别,即 但是,在上面的示例代码段中,它呈现的缩进量与相同。 有没有一种方法可以产生我想要的嵌套optgroup行为? 问题答案: 好的,如果有

  • 我正在尝试添加选项到一个动态选择输入,依赖于在另一个选择下拉菜单中选择的值。 我已经设法在选择父级中的值时填充数据对象。所有的my触发器也会被执行,子select被禁用,它应该包含数据对象中的所有值,但是它没有填充任何选项。 JS(Coffeescript)代码段: 最后一节特别重要,因为这是JSON数据对象应转换为新选项的地方。下面是在一种情况下响应的对象(根据Firebug): 在本例中,儿童

  • 我有一个用来选择某些元素的代码,当你点击geticon按钮并显示正确的选项值时,该代码工作得很好。问题是我不确定如何显示下拉菜单的选择选项值(而不是按钮)。 这是我的Jsfiddle null null

  • 下面是我得到的错误。 下面是HTML DOM