【发布时间】:2016-07-06 14:42:07
【问题描述】:
我有一个从数据库中提取下拉选项的工厂:
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 ng-model="clinicsDDL.item" ng-options="item.name for item in clinicsDDL track by item.id" ngRequired />
$scope.clinicsDDL 中的下拉列表数据如下所示:
[{
"id": "19",
"name": "other clinic"
}, {
"id": "39",
"name": "My clinic"
}]
从数据库返回的用户数据如下所示:
{
"__type": "User",
"FirstName": "Erik",
"LastName": "Grosskurth",
"DefaultLocationId": "39"
}
在我的控制器中,我填充下拉列表/选择,然后获取用户 ID 并将其提交给数据库以获取用户信息。此用户信息将返回。从那时起,我想根据从数据库返回的“DefaultLocationId”从先前填充的列表中选择一个特定选项。
我该怎么做呢?
$scope.clinicsDDL.item = $scope.clinicsDDL[0];
^^^ 不起作用,因为我不能依赖数组总是形成相同的。我需要基于“DefaultLocationId”而不是整数来定位数组项。
在 jQuery 中,您可以使用 $('#clinicsDDL option[value="19"').doSomething(); 来定位选择器
我在想它会像这样的角度:
$scope.clinicsDDL.item = $scope.clinicsDDL[value="19"];
^^^ 但这也不起作用
【问题讨论】:
标签: angularjs drop-down-menu html-select angular-ngmodel angularjs-ng-options