Javascript AngularJS:控制器中返回的未定义值

Javascript AngularJS:控制器中返回的未定义值,javascript,angularjs,http,angularjs-factory,Javascript,Angularjs,Http,Angularjs Factory,我正在使用angularJS构建一个访问http资源的工厂。我可以看到在请求附近本地返回的数据,但数据没有在控制器中返回。这是我的工厂: myNameSpace.factory('simpleFactory', function ($http) { var factory = {}; var customers = []; factory.getCustomers = function () { $http.jsonp('http://URL&callback=JSON_CALL

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

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;
}))

我的控制器是:

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;
    });
});

$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;
    });
});

$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;
    });
});

$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;
    });
});

请详细说明一下好吗?该调用需要时间才能返回-因此,当调用仍在进行时,您将触发
控制台
语句-从角度工厂中的异步调用返回时进行搜索。请详细说明一下好吗?该调用需要时间返回-因此,当调用仍在进行时,您将触发
控制台
语句进度-从角度工厂的异步调用返回时搜索可以详细说明吗?该调用需要时间返回-因此,当该调用仍在进行时,
console
语句激发-从角度工厂的异步调用返回时搜索可以详细说明吗?该调用需要时间返回-所以您的
控制台
语句在调用仍在进行时激发-从Angular Factory中的异步调用返回时搜索非常感谢您的帮助。它工作得非常好!非常感谢你的帮助。它工作得非常好!非常感谢你的帮助。它工作得非常好!非常感谢你的帮助。它工作得非常好!