Javascript 在我的示例中,如何获取http请求数据?

Javascript 在我的示例中,如何获取http请求数据?,javascript,angularjs,Javascript,Angularjs,我正在尝试在我的第一个控制器中获取http请求结果。http请求由另一个控制器触发。我的问题是我不确定如何检测请求是否在我的第一个控制器中完成。我有点像 第一控制器: //I am not sure how to get the customer result if //http requests are trigger by another controllers here. customerFactory.getCustomerResult???? //trigger the http

我正在尝试在我的第一个控制器中获取http请求结果。http请求由另一个控制器触发。我的问题是我不确定如何检测请求是否在我的第一个控制器中完成。我有点像

第一控制器:

//I am not sure how to get the customer result if
//http requests are trigger by another controllers here.

customerFactory.getCustomerResult????
//trigger the http request..
var id = 1;
$scope.clickme = function() {
    var obj = customerFactory.callApi(id)
}
第二控制器:

//I am not sure how to get the customer result if
//http requests are trigger by another controllers here.

customerFactory.getCustomerResult????
//trigger the http request..
var id = 1;
$scope.clickme = function() {
    var obj = customerFactory.callApi(id)
}
我的工厂

customerFactory.callApi = function(id) {
    return getCustomer(id)
        .then(function(customer) {
            return customer;    

         })  
}

var getCustomer = function(id) {
    return $http.get('/api/project1/getCustomer' + id);
}

return customerFactory;
html


//代码。。。
//其他代码。。
//其他代码。。
//代码。。。

第一控制器和第二控制器不相关。他们相距很远。如何让firstCtrl检测http请求是否完成并获取客户数据?非常感谢

您可以使用一个工厂或一个单独的服务来负责发出请求和存储数据。服务和工厂都是单例的,因此单实例将持续执行应用程序,并且可以通过注入工厂或服务从控制器引用数据和函数(当不需要通过提供程序在使用服务/工厂之前进行配置时,这两种方法都可以使用更简洁的语法定义提供程序)


感谢shaunhusain,您的示例显示了一个控制器调用ExampleService.getData,但它如何将返回数据传递给另一个控制器?+1刚刚编辑以显示第二个控制器,虽然它与第一个控制器相同,但我正在做的和您正在做的唯一区别是我还在服务中存储数据(工厂也可以)因此,这种方法可以从两个地方引用。有一些替代方法,但通常这是我遇到的最好的方法。公平地说,我从另一个答案中获取了我的代码,但我多次遇到这个问题,并将人们推荐到另一个帖子,感谢您的帮助!我的问题是我需要在Ex中触发http请求AMPECTRL,但让ExampleCtrl2获取数据。如果我理解正确,ExampleCtrl2也需要调用getData来获取数据。我只希望ExampleCtrl调用getData方法。不,您可以从任何一个方法调用它,ExampleService这里只有一个未重新创建的对象,因此第一次引用它时,每隔一次引用之后就会创建一个rence to it使用第一个对象。因此,您可以将服务注入两个控制器,并仅在一个控制器中调用服务上的方法,但通过服务从第二个控制器引用的数据的更改将指向两个控制器中的同一个数据对象。这里的一个要点是我使用angular.复制以填充所述数据对象,而不是更改引用对象。