传递范围参数来解析函数angularjs

时间:2013-10-21 14:17:00

标签: angularjs parameters routes resolve

我有一个路由提供商,其配置如下。

ocsApp.config(function($routeProvider){
        $routeProvider
            .when('/userStat/:pageNo' ,
            {
                templateUrl:'userStats',
                controller:'userStatController',
                resolve: {
                    loadData: searchController.loadData
                }

            });            
    });

loadData函数,即resolve方法调用一个服务,该服务需要大约6-7个参数,我不想在路由URL中出现,所有这些参数都在searchController范围内可用。有没有办法可以在loadData函数中传递这些参数。

代码是这样的。

     searchController.loadData=function($q,sessionFactory,$route){
            var deferred = $q.defer();
                sessionFactory.getSessions(siteId,startDate,endDate,pageNo,resultPerPage)
                success(function(data,status)
                {
                  deferred.resolve(data);
                 });

              return deferred.promise;
   };

有没有办法在loadData函数中传递这些参数。

1 个答案:

答案 0 :(得分:0)

“searchController”范围并不存在于您正在考虑的上下文中。

你应该做的是将searchController范围内当前的参数抽象为服务,将参数放在那里,然后将其注入loaddata函数。如果绑定很重要,您将不得不基于$ watch手动更新该服务的参数,或者您可以将服务中的参数对象放入searchController范围,并且常规绑定将起作用。