0

我有以下困境:

如果我有两个这样的嵌套控制器:

Controller1
   Controller2

在 Controller1 我有一个字段

someDataService.getMyUser().then(function(user){      
   $scope.user = user;
}

这是承诺的结果(对外部服务器的异步调用)。到目前为止,一切都很好。但是我该如何处理以下情况:

我需要在Controller2中使用

var userName = $scope.$parent.user.userName 

就在控制器被触发时。如何设置第二个控制器,等待第一个控制器中的承诺得到解决,然后才评估该 var userName 分配?(否则我会得到 $scope.$parent 未定义)

4

2 回答 2

0

有这样的依赖并不是很好,但是如果你需要在 Controller2 中调用一些初始化代码,你可以使用 $broadcast 在加载对象时直接从 Controller1 运行 Controller2 的初始化代码。

于 2015-04-29T00:22:10.917 回答
0

除了调用 $scope.$parent.user.userName,你不能调用一个调用 someDataServive.getMyUser() 并返回承诺的函数(类似于 $scope.$parent.get_user())吗?

或者,将 someDataService 注入 Controller2 并直接调用 getMyUser() 函数不是更好吗?

于 2014-07-29T14:54:36.570 回答