【发布时间】:2012-11-29 07:27:25
【问题描述】:
所以我的控制器的结构可能要为此负责。在这里你可以看到parent 和child 控制器,但重要的部分在这里:
父控制器
//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', {});
我的想法是我需要从父级的person 对象中获取events 到子控制器。问题是,从父级提升setAssociations 的每种方法都只适用于一种上下文。
load 版本适用于从应用内导航到页面(哈希、导航)。但是,当从外部重新加载或导航(完全加载)时,永远不会引发子事件,可能是因为它尚未注册其侦听器。
event 版本在页面被刷新或从应用程序外部导航到(任何导致页面完全加载的情况)时有效。导航到时,$scope 为空,但此方法失败。
因此,在“深度链接”或刷新以及进行内部导航时,应用加载控制器的顺序是不同的。 如何从具有父子关系的角度控制器获得一致的加载行为?
【问题讨论】:
标签: javascript angularjs