我有一个AngularJS控制器,它从服务加载数据(执行异步$http
请求)。
在子控制器中,我需要等待加载此数据,然后才能执行另一个$http
请求以加载更详细的信息。
我尝试在子控制器中执行此操作:
$scope.$parent.watch('dataLoaded', function(dataLoaded) {
if (dataLoaded) {
// call the service doing the subsequent $http request with data from parent controller
}
};
当我这样做时,它在子控制器中工作,但看起来像'dataLoaded'变量(在父控制器中加载数据后从false变为true)从未在父控制器中将其值实际更改为true控制器。
我做错了什么?我应该采用完全不同的方法吗?
答案 0 :(得分:4)
这里的要点是 - 我们需要一个被监视的引用(名称中为dot
)。例如。的 Model: {}
强>
所以,在父状态/视图中我们会声明它
$scope.Model = {
dataLoaded: false,
};
子视图可以$watch
模型属性更改(但不在父级上,仅在当前范围内)
$scope.$watch('Model.dataLoaded', function(dataLoaded) {
if (dataLoaded) {
...
}
};
在此处查看更多详情: