我写了一个 $ http.get 函数来提取存储在数据库中的数据。
我想在AngularJS的下拉函数中使用数据库数据。现在这意味着我必须创建一个新的 $ scope JSON数据变量并将实际数据库数据存储在其中,以便我可以在我的HTML页面中访问它。
<select popover="Choose your input drug, type to filter list of drugs" data-ng-model="currentData"
data-ng-options="name for name in ourDataName" style="width:300px;" convert-to-number >
</select>
ourDataName
中的{p> data-ng-options
是我在控制器中定义为$scope.ourDataName
的变量,它应该包含所有药物名称。我可以在下面的get函数中写入内容;然而,问题在于有超过100种药物名称:
$http.get(URL).success(function (data) { //Note URL is where I stored my database. I did not put it for privacy reasons
$scope.ourDataName =
[
data[1].drug_name,
data[2].drug_name,
data[3].drug_name
]
});
我试图在JSON数据上放置一个for
循环:
for(var i=0; i<100;i++)
{
$scope.ourDataName =
[
data[i].drug_name
]
}
问题是它最终只显示了第100个药物名称,因为它显示了循环结束的内容。
我没有解决方案。有没有办法循环遍历数据库并将它们存储在一个新的变量中,而不必像我最初那样检查每个变量?
答案 0 :(得分:3)
您无需为下拉列表创建其他数据集。
直接使用http返回的数据。
试试这个
<强>控制器强>
$http.get(URL).success(function (data) { //Note URL is where I stored my database. I did not put it for privacy reasons
$scope.ourDataName=data;
});
查看强>
<select popover="Choose your input drug, type to filter list of drugs" data-ng-model="currentData"
data-ng-options="name.drug_name for name in ourDataName" style="width:300px;" convert-to-number >
</select>
答案 1 :(得分:1)
Anik的回答很棒。但是如果你想使用循环选项,你可以在控制器中使用以下代码。
var targetExp = Expression.Parameter(typeof(Citizen), "rootobject");
var valueExp = Expression.Constant("\"StrozeR\"");
var valueExp2 = Expression.Constant(1765116);
var fieldExp = Expression.Property(targetExp, "name");
var fieldExp2 = Expression.Property(targetExp, "id");
var assignExp = Expression.Equal(fieldExp, valueExp);
var assignExp2 = Expression.Equal(fieldExp2, valueExp2);
var predicateBody1 = Expression.AndAlso(assignExp, assignExp2);
var queryableType = typeof(System.Linq.Queryable);
var whereMethod = queryableType.GetMethods()
.First(m =>
{
var parameters = m.GetParameters().ToList();
//Put more restriction here to ensure selecting the right overload
//the first overload that has 2 parameters
return m.Name == "Where" && m.IsGenericMethodDefinition &&
parameters.Count == 2;
});
var whereClause = Expression.Lambda<Func<Citizen, bool>>(predicateBody1,
new ParameterExpression[] { targetExp });
var genericMethod = whereMethod.MakeGenericMethod(typeof(Citizen));
var newQuery = (IQueryable<Citizen>)genericMethod
.Invoke(genericMethod, new object[] { queryableDataaa, whereClause });