当前位置: 首页 > 知识库问答 >
问题:

在加载或导航时,控制器加载顺序不同

鲁德佑
2023-03-14

所以我的控制器的结构可能是造成这种情况的原因。在这里您可以看到父控制器和子控制器,但重要的部分在这里:

父控制器

//Load version
$scope.person = People.people.get({ id: $routeParams.id}, function(person) {
     var associations = {
         events: person.events || [],
         people: person.people || [],
         places: person.places || []
     };
     $scope.$broadcast('setAssociations', associations);
});
//Event version
$scope.$on('getAssociations', function(e, args) {
  var associations = {
    events: $scope.person.events || [],
    people: $scope.person.people || [],
    places: $scope.person.places || []
  };
  $scope.$broadcast('setAssociations', associations);
});

子控制器

$scope.$on('setAssociations', function(event, args) {
    $scope.parentEvents = args.events;
});

$scope.$emit('getAssociations', {});

如果刷新页面,或者从应用程序外部导航到页面(任何导致页面完全加载的内容),事件版本就会工作。导航到此时,$scope为空,此方法失败。

因此,当“深度链接”或刷新时,以及当进行内部导航时,应用程序加载控制器的顺序是不同的。如何从具有父子关系的角度控制器获得一致的负载行为?

共有1个答案

苏昂雄
2023-03-14

从另一个角度来看这个问题,因为子作用域通常继承自父作用域,这意味着我们在父作用域上定义的任何属性都可以在子作用域中立即访问...即使稍后将属性添加到父作用域,也是在创建子作用域之后。换句话说,您可能不必使用事件来向孩子获取您想要的信息。

如果您的问题仅仅是子作用域需要父作用域的一些信息,那么只需将这些数据分配给一个新的parent$scope属性,并让您的子视图访问它。当它被定义时,它将出现在子视图中。尝试$scope.associations而不是VAR Associations

这里是一个人为的小提琴,它使用ng-click将一些数据添加到父范围,然后在子视图中可见。

 类似资料:
  • 问题内容: 我正在使用Ionic Framework开发应用程序,并且有多个视图。路由名称是 app.view1 和 app.view2 。我使用控制器切换到下一个视图,当我单击返回时,app.view1的控制器不再执行,这在我的应用程序中非常重要。 请告诉我如何在每次路由到控制器时执行它。 问题答案: Ionic缓存视图以提高性能。它使用的功能。 Ionic最多可以缓存10个视图,不仅可以配置它

  • 我收到以下错误,我不确定为什么,因为我直接从模板中运行代码。有人在堆栈跟踪中看到了我没有看到的东西吗?它贴在下面。 “/Cfia中的服务器错误。网状物MVC模板。示例的应用。 远程服务器返回错误:(404)未找到。 描述:在执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源。 异常详细信息:System. Net. WebException:远程服

  • 问题内容: 我有一个现有页面,需要在其中添加一个可以动态加载的控制器的角度应用程序。 这是一个片段,它根据API和我发现的一些相关问题实现了关于如何完成操作的最佳猜测: JSFiddle。请注意,这是对实际事件链的简化,在以上各行之间有各种异步调用和用户输入。 当我尝试运行上述代码时,由$ compile返回的链接器将抛出:。如果我正确地理解了引导程序,那么它返回的注射器应该知道该模块,对吗? 相

  • 我对maven的类加载顺序有一个问题。 我知道,自maven版本2.0.9以来,类加载一直是确定性的,并且在pom中使用顺序。我不清楚传递依赖关系。maven是否首先加载所有顶级依赖项,然后加载传递依赖项。或者加载具有所有传递依赖项的顶级依赖项,然后加载下一个顶级依赖项。 我知道在完全正确的maven设置中,顺序没有问题,但我在依赖项中有一些重复的类,我想知道使用哪一个。排除可传递依赖项是没有选择

  • 问题内容: 基本上我得到以下HTML: 在本地该图标在按钮上显示正常,但是当我在Windows Azure上运行时,出现以下带有怪异的外观前缀而不是图标的按钮: 在此处输入图片说明 考虑到这一点,我意识到当本地访问我的网站时,浏览器将尝试加载文件:/Content/fonts/glyphicons-halflings-regular.woff(成功完成),而在线(天蓝色)时,它将尝试加载以下文件: