我有以下两难困境:
如果我有两个这样的嵌套控制器:
Controller1
Controller2
在Controller1中我有一个字段
someDataService.getMyUser().then(function(user){
$scope.user = user;
}
这是promise(对外部服务器的异步调用)的结果。 到现在为止还挺好。但是我该如何处理以下情况:
我需要在Controller2中使用
var userName = $scope.$parent.user.userName
当控制器被触发时。 如何设置第二个控制器,等待第一个控制器中的promise被解析,然后才评估var userName的赋值? (否则我会得到$ scope。$ parent未定义)
答案 0 :(得分:0)
不是调用$ scope。$ parent.user.userName,而是不能调用调用someDataServive.getMyUser()并返回promise的函数(类似于$ scope。$ parent.get_user())?
或者,将someDataService注入Controller2并直接调用getMyUser()函数是不是更好?
答案 1 :(得分:0)
It's not really good to have a dependency like this, but if you need to call some init code in Controller2, you can do it using $broadcast to run init code of Controller2 directly from Controller1 when the object will be loaded.