我在AngularJS中遇到使用$ http从服务器获取数据的问题。 这是我的HTML
//arrayOfCustomObjects is the array that contains your objects to be sorted
//Replace YourCustomObject with the actual class of the objects
NSArray* sortedArray = [arrayOfCustomObjects sortedArrayUsingComparator:^NSComparisonResult(YourCustomObject* obj1, YourCustomObject* obj2) {
NSString* title1 = ((CourseText*)obj1.titles.anyObject).title;
NSString* title2 = ((CourseText*)obj2.titles.anyObject).title;
return [str1 compare:str2];
}];
这是我的AngularJS脚本
<select ng-model="foo" ng-options="item as item.name for item in items"></select>
这段代码的期望是当$ http从服务器获取数据时,选择下拉数据会发生变化。但它没有改变任何东西。我还在成功回调中的控制台中打印了响应项。
也许我不太了解$ http的使用情况。也许当我在getData()之后控制数据时; $ scope.items根本不会改变。我认为也许$ http总是在最后阶段运行。
有人可以帮忙解释这个问题吗?如果我的假设是正确的,我正在寻找什么解决方案?
答案 0 :(得分:0)
我认为您只需要添加track by
子句:
ng-options="item as item.name for item in items track by item.id"
答案 1 :(得分:0)
检查响应对象。当您使用'then'回调来获取已解析的数据时,实际的API结果将存储在响应的'data'属性中。所以将代码更改为
$scope.items = response.data;
或者您可以使用成功回调直接附加数据。
$http.get("ng/getData")
.success(function(response) {
if (response.status == 200) {
$scope.items = response.items;
}
});