我需要动态地向控制器注入一个额外的对象,所以我认为最好在run
函数中这样做:
angular.module("app").run([
"$rootScope", "$inject", "repository.user", function ($rootScope, userRepository) {
$rootScope.$on("$routeChangeStart", function (event, next, current) {
var controller = next.$$route.controller;
userRepository.getSession(function(data) {
// What do do now?
});
});
}
]);
我想将已退回的data
注入我的控制器,但我不确定该怎么做?
答案 0 :(得分:0)
查看$ routeProvider文档,特别是路由的解析配置选项。您是否考虑过使用它来动态解决依赖关系?
resolve - {Object。=} - 应该注入控制器的可选依赖关系图。如果这些依赖项中的任何一个是promise,路由器将等待它们全部被解析或者在实例化控制器之前被拒绝。如果成功解决了所有promise,则会注入已解析的promise的值并触发$ routeChangeSuccess事件。如果任何promise被拒绝,则触发$ routeChangeError事件。地图对象是:
key - {string}:要注入控制器的依赖项名称。
factory - {string | function}:如果是string,那么它就是服务的别名。否则,如果是函数,则将其注入,并将返回值视为依赖项。如果结果是一个promise,则在将其值注入控制器之前解析它。请注意,ngRoute。$ routeParams仍将引用这些解析函数中的上一个路由。而是使用$ route.current.params来访问新的路由参数。
答案 1 :(得分:0)
如果我理解正确,您正尝试为每次路由更改收集用户登录状态。为什么不直接将$ rootScope中的数据保存为$ rootScope.currentUser = data。
这样您就可以从任何控制器访问$ rootScope.currentUser。