【发布时间】:2013-11-22 00:37:34
【问题描述】:
我有一个从 VS 运行的 ASP.Net WebAPI 项目,它以 JSON 的形式向我的 Angular 项目提供数据。我通过 $http.get 调用从 webapi 获取数据,如下所示:
function CarController($scope, $http) {
$http.get('http://localhost:1246/api/values')
.success(function (data, status, headers, config) {
$scope.carSet = data;
})
.error(function (data, status, headers, config) {
$scope.error = status;
alert("You be broken buddy!");
});
}
然后 carSet 像这样绑定在 html 中:
<!DOCTYPE html>
<html data-ng-app="">
<head>
<title></title>
<script src="scripts/controllers/controller.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.min.js"></script>
</head>
<body>
<div data-ng-controller="CarController">
<select data-ng-model="carSet" onchange="DataChanged()" data-ng-options="c.Color for c in carSet"></select>
</div>
</body>
</html>
一切都很好。我得到我的清单。第一个条目是空白的,现在可以了。
问题:
当我选择下拉列表中的任何项目时,整个列表都被清除,没有更多项目可供选择??哇!在这一点上,我显然很沮丧。此行为仅在我使用 $http 机制从 WebApi 检索数据时发生。如果我使用 $http.get 从文件或其他本地创建的数据存储中检索 json 数据,则不会发生这种情况。我只需要一个简单的下拉列表,它允许我使用它的选定值来过滤其他数据(另一个 db 调用。)
我会给你看照片..但这是我的第一篇文章..好吧....我不能。
非常感谢任何帮助。谢谢。
【问题讨论】:
-
你能不能创建一个 plunker 来演示这个问题
-
onchange="DataChanged()"是干什么用的?在 Angular 中使用本机更改内联事件处理程序不是一个好主意。使用ng-change,但是代码没有那个功能。$scope = {};看起来也是个糟糕的主意 -
DataChanged() 只是一个处理程序,用于在选择后组合折叠时中断代码。然后我可以进入剩余的代码来尝试找出发生了什么。是的,不知道如何在 plunker 中建模 webapi 返回,因为使用 $http 从静态源检索数据似乎工作正常。动态部分不起作用。
-
我建议不要使用 $scope = {};,这对用户控制器来说是一个更好的做法。至于发生了什么,为了更好地理解,看起来您遇到了存储问题,并且存储carset是要走的路,例如,this.carset = data。
标签: c# javascript http angularjs asp.net-web-api