angularjs - 等待来自父 Controller 的 $scope 变量被定义

标签 angularjs scope controller angular-ui-router

我有一个 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/

相关文章:

javascript - 为什么输入不能与 ng-repeat 一起正常工作

scope - CFQUERY 范围的问题

c - 使用指针引用时的 block 级变量范围和生命线

javascript - Angular ng-view幻灯片动画

javascript - 在 Promise 调用的错误函数回调之后附加对象的用法是什么

angularjs - 运行angularjs karma 示例时出错

angularjs - 是否有必要将 $scope 注入(inject)到 angularjs 中的 Controller 中?

java - 好的做法 : Keeping local variable scope VS dependency injection

asp.net-mvc-4 - 在脚手架选项下的添加新 Controller 对话框中添加新的自定义 T4 模板

arrays - Codeigniter - 将表单输入信息传递给 Controller ​​并将其显示在下一个 View 上