Javascript 当应用程序类似于angular js中的3层时,如何从ajax调用中获取数据

Javascript 当应用程序类似于angular js中的3层时,如何从ajax调用中获取数据,javascript,angularjs,ajax,Javascript,Angularjs,Ajax,我有两个服务,一个用于获取ajax调用,第二个用于操作从该服务获取的数据,现在我想将这些数据返回给控制器,但数据没有得到更新,下面是我的代码 angular.module(“数据”,[]).service(“数据服务”,函数($http){ 返回{ 数据: 函数(url、回调){ $http.get(url).success(回调); }, } }) 角度。模块(“主”、“数据”)。服务(“主服务”,功能(数据服务){ 返回 { 数据W3: DataService.Data('http:/

我有两个服务,一个用于获取ajax调用,第二个用于操作从该服务获取的数据,现在我想将这些数据返回给控制器,但数据没有得到更新,下面是我的代码

angular.module(“数据”,[]).service(“数据服务”,函数($http){
返回{
数据:
函数(url、回调){
$http.get(url).success(回调);
},
}
})
角度。模块(“主”、“数据”)。服务(“主服务”,功能(数据服务){
返回
{  
数据W3:
DataService.Data('http://www.w3schools.com/angular/customers.php,函数(结果){
返回结果和记录
});
}
})
角度模块(“Home”).控制器(“HomeCntrl”,功能($scope,HomeService){
console.log(DataService.Dataw3)

})
首先,您将
工厂
语法与
服务
声明一起使用

angular.module("Data", []).factory("DataService", function ($http) {

angular.module("Home", ["Data"]).factory("HomeService", function (DataService) {
也许应该这样做

然后,您试图从回调返回一个值,但这根本不起作用。Dataw3应该是一个将回调作为参数的函数,您可以在其中放置console.log:

angular.module("Data", []).factory("DataService", function ($http) {   
    return {
        Data:  
           function (url, callback) {
                $http.get(url).success(callback);     
           }
    };
});

angular.module("Home", ["Data"]).factory("HomeService", function (DataService) {
    return {
        Dataw3:
            function(callback){
                DataService.Data('http://www.w3schools.com/angular/customers.php', function (results) {
                    callback(results);
                });
            }
    };
});

angular.module("Home").controller("HomeCntrl", function ($scope, HomeService) {          
    HomeService.Dataw3(function(result){
        console.log(result);
    });
});

我建议您深入研究angular中的service vs factory,以及javascript中的异步调用,以便更好地了解您正在做的事情。

它在函数dataW3I中显示了一个错误,我更新了我的答案,现在应该可以工作了,只是return语句有一个问题。get下面的错误ReferenceError:DataService在jqNodes的Object.invoke(angular.js:4219)的new(HtmlPage2.html:43)中没有定义。在compositelink的forEach(angular.js:334)的angular.js:7762中没有定义$get.extend.instance(angular.js:8516)(angular.js:7140)在publicLinkFn(angular.js:7019)在angular.js:1460在Scope.parent.$get.Scope.$eval(angular.js:14570)