0

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

1 に答える 1

3

$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;
    });
});
于 2014-06-24T15:40:20.370 に答える