2014-12-07 78 views
0

如何从函数内的函数内部访问函数中的数据?当调用返回返回函数的函数的函数时,如何获取底部的数据?

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在我的控制器被分配

回答

1

你的工厂返回一个函数,该函数在你的控制器返回一个承诺使你的代码应该是这样的:

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

编辑︰我与$ http混淆$资源,所以事情看起来有点不同,但一切都在这里解释:https://docs.angularjs.org/api/ngResource/service/ $资源

我把它通过改变代码,这个工作:

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

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

+0

我应该改变我的工厂呢? – CodyBugstein 2014-12-07 09:24:22

+0

我仍然'TypeError:undefined不是一个函数' – CodyBugstein 2014-12-07 09:30:46

+0

如果它能正常工作,它满足您所有的要求,我没有看到你应该改变它的原因。唯一我没有得到的是为什么当你从不使用参数'name'时传入参数。 – JohnDoe90 2014-12-07 09:42:19

0

你只需要另一套括号

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

,但请注意,你需要一些回调之类的话(或承诺可能?)你'从异步的ajax调用返回。

BTW上面的代码只是一个衬为

var func = projectsSrvc(name); // store the function reference 
$.scope.projects = func(argumentmustbepassedhereforthefunction); 
+0

我得到'类型错误:对象不是function' – CodyBugstein 2014-12-07 08:12:01