在控制器外调用 service/factory

Invoke service/factory outside of controller

我有一个处理所有用户功能的 userService。为了用数据填充它,我的 _Layout.cshtml 创建了一个全局 currentUser 变量,然后我想将其放入我的 userService 中。我如何在 bootstrap 期间执行此操作?

感觉我应该可以做这样的事情:

var myApp = angular.module('myApp', [...]);
var userService = myApp.create("userService");
userService.setUser(currentUser);

您可以使用 run 在使用控制器之前执行此操作。大致如下:

myApp.run(['userService', function(userService){
  userService.setUser(currentUser); // Consider injecting currentUser, too...
}]);

如果它需要在触发 run 事件之前完成(不过,一般来说,对于这种事情 run 应该足够了),你可能想把它放在config 函数 (myApp.config(/*etc.*/);)。

但是,这些无法访问典型的 Service 提供商,因此您必须更加自定义: