我有一个 AngularJS Controller ,它从服务加载数据(执行异步 $http
请求)。
而在子 Controller 中,我需要等待这个数据被加载才能做另一个 $http
请求加载一些更详细的信息。
我尝试在子 Controller 中执行此操作:
$scope.$parent.watch('dataLoaded', function(dataLoaded) {
if (dataLoaded) {
// call the service doing the subsequent $http request with data from parent controller
}
};
当我这样做时,它在子 Controller 中工作,但似乎“dataLoaded”变量(一旦数据加载到父 Controller 中,它就会从假变为真)在父 Controller 中从未将其值实际更改为真。
我究竟做错了什么 ?我应该使用完全不同的方法吗?
最佳答案
这里的重点是 - 我们需要一个被监视的引用(名称中的 dot
)。例如。 Model: {}
所以,在父状态/ View 中,我们会声明它
$scope.Model = {
dataLoaded: false,
};
和 subview 可以$watch
该模型属性更改(但不在父级上,仅在当前范围内)$scope.$watch('Model.dataLoaded', function(dataLoaded) {
if (dataLoaded) {
...
}
});
在此处查看更多详细信息:How do I share $scope data between states in angularjs ui-router?
关于angularjs - 等待来自父 Controller 的 $scope 变量被定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33368495/