迁移到AngularJS 1.6.3后无法从服务获取数据

时间:2017-03-09 11:39:26

标签: javascript angularjs angular-ui-router angularjs-service angularjs-factory

迁移到AngularJS 1.6.3后,我改变了我的服务,如下所示:

这是我的服务:

MetronicApp.factory('MyService', ['$http', function($http) {
    return {
    get: function(id, success, error) {
        return $http.get(baseUrl + '/quotation/' + quotationid).then(success,error);
    }
  }
}]);

在ui-router中,我正在解析这样的数据。

data: function(MyService, $stateParams) {
    return MyService.get($stateParams.id);
}

但是在控制器中,数据未定义。我哪里错了?

2 个答案:

答案 0 :(得分:0)

我们在服务部分中使用以下代码:

function load_list() {
            $("#filename").empty();
            $.ajax({
                type: 'GET',
                dataType: 'json',
                url: "/cgi-bin/list_cgi?action=get_list",
                success: function(result) {
                    var list = result.file.sort();
                    var current = result.current.split("/").pop();
                    list = list.slice(0, -1);
                    if (list.length == 0) {
                        $("#unavailable").html("<h2>File not found, please upload.</h2>");
                        show_upload();
                        return;
                    }
                    for (var i in list) {
                        $("filename").append("<option>" + list[i] + "</option>");
                                            }
                    $("filename").val(current);


                }
            });
        }

没有应用任何回调,并且在调用代码中:

get: function(){
    return $http.get(url);
}

答案 1 :(得分:0)

这是因为您没有从success / error回调函数返回任何内容。相反,我建议从.then(success,error);方法中删除get。然后只需调用service get方法 从决心。

data: function(MyService, $stateParams) {
    return MyService.get($stateParams.id);
}