Таким образом, структура моего контроллера может быть виновата в этом. Здесь вы можете увидеть родительский и 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', {});
Идея состоит в том, что мне нужно получить events
от родительского объекта person
до дочернего контроллера. Проблема в том, что каждый метод повышения setAssociations
от родителя работает только в одном контексте.
Версия load
работает, если страница перемещается из приложения (хеш, навигация). Однако при перезагрузке или навигации извне (полная загрузка) дочернее событие никогда не возникает, по-видимому, потому, что оно еще не зарегистрировало его слушателей.
Версия event
работает, если страница обновляется или перемещается извне приложения (все, что вызывает загрузку страницы). При навигации, $scope
пуст, хотя и этот метод терпит неудачу.
Таким образом, порядок, в котором приложение загружает контроллеры, отличается при "глубокой увязке" или освежении, а также при внутренней навигации. Как я могу получить согласованное поведение нагрузки от контроллеров angular, у которых есть родительское дочерние отношения?