0

如问题中所述,$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;
        });
    }
  ]);
});
4

1 回答 1

1

这里的罪魁祸首是闭包。我建议快速浏览一下Mozilla 关于该主题的 MDN 文章

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

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

于 2013-10-10T22:41:35.957 回答