为什么在这个控制器中无法访问$ location?

时间:2013-10-10 22:39:42

标签: javascript angularjs

正如问题中所述,$location点的控制器无法访问debugger服务。

$(document).ready(function() {
    return angular.module('dashboard.controllers').controller(
    'projectController', 
    ['$route', '$routeParams', '$scope', '$location', '$rootScope',
    'ProjectDataService', 'UserService', 

    function($route, $routeParams,$scope, $location, $rootScope,
    ProjectDataService, UserService) 
    {
        return ProjectDataService.loadProjectData().then(function(d) {
            $scope.projectSearch = "";
            $scope.projects = ProjectDataService.getProjectData();
            debugger;
        });
    }
  ]);
});

1 个答案:

答案 0 :(得分:1)

这里的罪魁祸首是Closures。我建议您快速查看Mozilla's MDN article on the topic

在您的情况下,传递给then()的匿名函数是闭包。由于您没有在匿名函数的范围内使用$location,因此在执行匿名函数时它不可用。因此,您无法在调试器中看到该值。

如果您在匿名函数的范围内使用$location,那么您将在调试器中看到它在范围内可用。