javascript - AngularJS : Undefined value returned in controller

标签 javascript angularjs http angularjs-factory

我正在使用 angularJS 构建一个访问 http 资源的工厂。我可以看到数据在请求附近本地返回,但数据未在 Controller 中返回。这是我的工厂:

myNameSpace.factory('simpleFactory', function ($http) {
var factory = {};
var customers = [];
factory.getCustomers = function () {
    $http.jsonp('http://URL&callback=JSON_CALLBACK').success(function (data) {
        customers = data;
        return customers;
    })
}

return factory;

});

我的 Controller 是:

myNameSpace.controller('DetailsController', function ($scope, $http, simpleFactory) {
var cust = simpleFactory.getCustomers();
$scope.CustomerData = simpleFactory.getCustomers();
console.log(cust); //The value that is display here is undefined
});

最佳答案

$http 调用是一个 ajax 异步调用,这意味着您需要通过回调发送结果。这可能会有所帮助:

这是工厂:

myNameSpace.factory('simpleFactory', function ($http) {
var factory = {};
factory.getCustomers = function (callback) {
    $http.jsonp('http://URL&callback=JSON_CALLBACK').success(callback);
}

return factory;

});

使用方法如下:

myNameSpace.controller('DetailsController', function ($scope, $http, simpleFactory) {
    simpleFactory.getTopOffenders(function(offenders) {
        $scope.topoffendersData = offenders;
    });
});

关于javascript - AngularJS : Undefined value returned in controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24390800/

相关文章:

javascript - slideUp() slideDown() 不能正常工作

javascript - 在模态弹出窗口 + iframe 中显示时的外部网站/图像大小

angularjs - ng-repeat 带有复选框并捕获值

performance - 发送两个后续 HTTP 请求的最快方法是什么?

javascript - 如何修复 UnhandledPromiseRejectionWarning : TypeError?

javascript - 单击图像后如何播放/启动 vimeo 视频?

javascript - Angular Material,侧边栏中的列表不可滚动

javascript - 将范围与侧面菜单绑定(bind)不起作用 - ionic

.net - iis HTTP 重定向通过使用 web 配置中的规则

http - HTTP post 请求中的 Content-Type 是强制性的吗?