我创建了一个服务来从数据库中获取数据。该服务不会填充下拉列表
响应数据中的值为:[{" ID":1,"名称":"名称1"},{" ID&#34 ;:2"名称":"名称2"}]
HTML
<md-input-container flex>
<md-select ng-model="selected.topic" required>
<md-option ng-repeat="topic in topics" value="{{topic.ID}}">{{topic.Name}}</md-option>
</md-select>
</md-input-container>
javascript控制器
$scope.topics = getTopicsService.getTopics(baseUrl);
服务:
MyApp.factory('getTopicsService', function ($http) {
return {
getTopics: function (baseUrl)
{
return $http.post(baseUrl + 'Admin/getTopics').then(function (response) {
return $.parseJSON(response.data);
});
}
}
});
答案 0 :(得分:2)
服务:
MyApp.factory('getTopicsService', function ($http) {
return {
getTopics: function (baseUrl)
{
return $http.post(baseUrl + 'Admin/getTopics');
}
}
});
控制器:
getTopicsService.getTopics(baseUrl).then(function(response) {
$scope.topics = $.parseJSON(response.data);
});
现在调试问题要容易一些。 如果它仍然不起作用:
编辑1:
您的解决方案无法正常工作的原因是您从服务方法getTopics
返回$ http调用。您的服务功能在承诺本身已解决之前返回。因此,您将$http
请求对象本身绑定到您的范围变量而不是请求的响应。
通过在http请求的回调中向您的范围变量添加response.data
,您确保将范围变量设置为 AFTER 您的承诺。
答案 1 :(得分:0)
您需要为此范围变量赋值,
getTopicsService.getTopics(baseUrl).then(function(resp){ $scope.topics = resp.data; });