angularJS service传参的一个问题

在sf上看到一个关于angularJS传参的问题,链接 在此

代码如下:

var app = angular.module('demo.controllers', []);
//定义一些请求的url
app.factory('Path' , function(){
    return {
        main_request_url: 'http://0.0.0.0:3001/apis/v1_1/'
    }
});

app.factory('MediaResource' , ['$http' , 'Path' , function($http , Path){

    return {
        //这里传入一个callback参数 用来获取参数
        all_of_media: function(call_back_param){
            //发起一个简单地请求
            $http({
                url: Path.main_request_url+'/media.json' , 
                method: 'get', 
                headers: {
                    'Content-Type': undefined
                }
            }).then(function(data){
                //把请求到得资源传递给callback
                call_back_param(data);
            });
        }
    }

}]);

app.controller('MainCtrl' , function($scope , MediaResource){

    //同样传递一个callback进去
    MediaResource.all_of_media(function(params){
        //然后绑定到$scope 
        $scope.results = params.data;

    });

});

其中,由call_back_param(data),可以直接params.data,不太明白,为什么可以这样呢?

阅读 1.9k
1 个回答

call_back_paramall_of_media的参数,是一个函数
在请求完之后调用,并把请求到的数据传给这个函数

call_back_param(data);

而你通过,调用MediaResource.all_of_media,把

function(params){
        //然后绑定到$scope 
        $scope.results = params.data;

    }

传给了它作为参数,也就是上面定义的

call_back_param
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏