【发布时间】:2015-02-25 12:35:03
【问题描述】:
我有一个控制器。这是构造函数的相关部分(这个函数的正确术语是什么?):
activate();
function activate() {
$scope.$broadcast('ctrlLoadingStarted');
var promises = [getUsers()];
return $q.all(promises).then(function (eventArgs) {
$scope.$broadcast('ctrlLoadingFinished');
});
}
因此,activate 函数基本上是一个通用函数,它接收一组数据获取函数。它在开始时广播,在结束时广播。
然后我有一个嵌套在控制器范围内的指令,这里是指令的相关部分:
function link(scope, element, attrs) {
scope.$on('ctrlLoadingStarted', function (event, args) {
scope.spinnerOn = true;
});
scope.$on('ctrlLoadingFinished', function (event, args) {
scope.spinnerOn = false;
});
}
如您所见,它只是监听开始和结束事件并打开和关闭微调器。
问题是控制器似乎在指令之前实例化。这会导致广播关闭并且没有打开微调器。
我尝试简单地将scope.spinnerOn = true; 放在指令的第一行(这样,无论控制器何时相对于指令实例化进行实例化,微调器都会一直运行)。但是,我遇到的问题是控制器的第二次广播会在指令被实例化之前就发出,从而导致无限的微调。
我只是想确保如果控制器在指令之前实例化,但是数据获取需要一段时间,微调器将旋转。
感谢所有建议,提前致谢。
【问题讨论】:
标签: javascript angularjs