Angularjs 登录后仅获取一次常规数据?

Angularjs 登录后仅获取一次常规数据?,angularjs,Angularjs,时间表对象具有链接到项目的任务链接。我想在时间表详细信息屏幕上显示项目。理想情况下,我希望一次性加载所有task_链接和项目(当用户登录时),并在必要时重新加载它们。我该怎么做 现在我的时间表中有这个,但它看起来很糟糕: .controller('TimesheetDetailCtrl', function($scope, $stateParams, $filter, TaskLinks, Projects, Tasks, Timesheets) { Timesheets.query({

时间表对象具有链接到项目的任务链接。我想在时间表详细信息屏幕上显示项目。理想情况下,我希望一次性加载所有task_链接和项目(当用户登录时),并在必要时重新加载它们。我该怎么做

现在我的时间表中有这个,但它看起来很糟糕:

.controller('TimesheetDetailCtrl', function($scope, $stateParams, $filter, TaskLinks, Projects, Tasks, Timesheets) {
    Timesheets.query({q: {id_eq: $stateParams.timesheetId }}).$promise.then(function(data, status) {
      $scope.timesheet = data[0];
        TaskLinks.query().$promise.then(function(data, status){
            $scope.project_id = $filter('filter')(data, {id: $scope.timesheet.task_link_id})[0].project_id;
            Projects.query().$promise.then(function(data, status){
              $scope.project = $filter('filter')(data, {id: $scope.project_id})[0];
            });
        });
      })
})
目前的服务如下所示:

.factory('Projects', function($resource) {
  return $resource('http://127.0.0.1:3000/api/v1/projects');
})

.factory('TaskLinks', function($resource) {
  var task_links = $resource('http://127.0.0.1:3000/api/v1/task_links', {},
    {query:
      {
        cache: true,
        method: 'GET',
        isArray: true
      }}
  );
  return task_links;
})

在用户登录后,我可以更改什么,以便在用户登录后调用一些东西,而不必总是围绕承诺进行操作?

您似乎可以使用
$emit
从控制器触发事件,并使用$on捕捉登录事件

控制器1

scope.$emit("UserLoggedIn", value);
控制器2中将使用
$on
捕获的事件,如:

$scope.$on("UserLoggedIn", function(event, ars){
   ... //your event has been triggered.    
});