AngularJS承诺并嵌套控制器

时间:2014-07-29 14:49:11

标签: javascript angularjs asynchronous controller angular-promise

我有以下两难困境:

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

Controller1
   Controller2

在Controller1中我有一个字段

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

这是promise(对外部服务器的异步调用)的结果。 到现在为止还挺好。但是我该如何处理以下情况:

我需要在Controller2中使用

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

当控制器被触发时。 如何设置第二个控制器,等待第一个控制器中的promise被解析,然后才评估var userName的赋值? (否则我会得到$ scope。$ parent未定义)

2 个答案:

答案 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.