Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于填充下拉列表的Angular js数据服务_Javascript_Angularjs - Fatal编程技术网

Javascript 用于填充下拉列表的Angular js数据服务

Javascript 用于填充下拉列表的Angular js数据服务,javascript,angularjs,Javascript,Angularjs,我创建了一个服务来从数据库中获取数据。该服务不填充下拉列表 响应数据中的值是:[{“ID”:1,“Name”:“Name1”},{“ID”:2,“Name”:“Name2”}] html 服务: MyApp.factory('getTopicsService', function ($http) { return { getTopics: function (baseUrl) { return $http.post(baseUrl

我创建了一个服务来从数据库中获取数据。该服务不填充下拉列表

响应数据中的值是:[{“ID”:1,“Name”:“Name1”},{“ID”:2,“Name”:“Name2”}]

html

服务:

MyApp.factory('getTopicsService', function ($http) {
    return {
        getTopics: function (baseUrl)
        {
            return $http.post(baseUrl + 'Admin/getTopics').then(function (response) {
                return $.parseJSON(response.data);
            });
        }
    }
});
MyApp.factory('getTopicsService', function ($http) {
    return {
        getTopics: function (baseUrl)
        {
            return $http.post(baseUrl + 'Admin/getTopics');
        }
    }
});

嗯,试着改变一下你的承诺

服务:

MyApp.factory('getTopicsService', function ($http) {
    return {
        getTopics: function (baseUrl)
        {
            return $http.post(baseUrl + 'Admin/getTopics').then(function (response) {
                return $.parseJSON(response.data);
            });
        }
    }
});
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);
});
现在调试这个问题就容易多了。 如果仍不工作:

  • 检查您是否在http回调中得到正确的响应。验证返回到预期结构中的数据
  • 确保控制器和模板的设置正确,以便模板可以访问控制器的范围变量(只需将范围变量作为角度表达式记录在模板中即可进行测试)
  • 编辑1: 解决方案不起作用的原因是您正在从服务方法
    getTopics
    返回$http调用本身。您的服务函数在承诺本身得到解决之前返回。因此,您将
    $http
    请求对象本身绑定到范围变量上,而不是请求的响应上


    通过向http请求回调中的范围变量添加
    response.data
    ,您可以确保在返回承诺后设置范围变量。

    您需要像这样为范围变量赋值

    getTopicsService.getTopics(baseUrl).then(function(resp){ $scope.topics = resp.data; });
    

    $scope.topics,它的价值是什么?使用console.log($scope.topics)检查scope是否有值?您是否尝试过答案中的解决方案?你的解决方案应该有效。你能解释一下为什么我不能在服务中解析JSON吗