当调用返回函数返回函数的函数时,如何在底部获取数据?

时间:2014-12-07 08:04:53

标签: javascript function callback

如何从函数I函数内部的函数中访问数据?

projectsRsrc.factory('projectsSrvc', ['$resource', function($resource){

    return function(name){
        var url = "http://localhost/proj/v3/apiSimulations/projects.json"; 
        var resource = $resource(url);
        return resource.get(function(data){
            return data;
        });
    }
}]);

我想在我的控制器中获取此数据。

projectsApp.controller('projectsCtrl', ['$scope', 'projectsSrvc', function($scope, projectsSrvc){

    $scope.projects = projectsSrvc(name);
}

但是projectsSrvc返回一个函数,我不确定如何访问它返回的函数。最后,我希望在我的控制器中分配data

2 个答案:

答案 0 :(得分:1)

您的工厂返回一个函数,该函数返回 promise ,因此在您的控制器中,您的代码应如下所示:

projectsSrvc(name).then(function(data) {
   $scope.projects = data;
});

编辑:我将$ resource与$ http混合在一起,所以事情看起来有点不同,但是这里解释了所有内容:https://docs.angularjs.org/api/ngResource/service/ $ resource

我通过将代码更改为此来实现它:

projectsSrvc(name).$promise.then(function(data) {
   $scope.projects = data;
});

在这里测试:http://jsbin.com/vepivacosa/1/edit?html,js,console

答案 1 :(得分:0)

你只需要另一套parantheses

$scope.projects = projectsSrvc(name)(argumentmustbepassedhereforthefunction);

但请注意,当你从异步的ajax调用返回时,你需要一些回调类的东西(或承诺可能是?)。

顺便说一句,上面的代码只是

的单行代码
var func = projectsSrvc(name); // store the function reference
$.scope.projects = func(argumentmustbepassedhereforthefunction);