/ / Дитячий контролер виконаний перед батьками - javascript, angularjs, angularjs-scope, angularjs-controller

Дитячий контролер, виконаний перед батьком - javascript, angularjs, angularjs-scope, angularjs-controller

У моїй батьківській області я отримую json файл з цим кодом, і я використовую ng-repeat в дитячому перегляді, щоб отримати доступ до нього.

    $scope.services = Services.query();

factory("Services", function($resource) {
return $resource("/services/:serviceId", {
serviceId: "@_id"
}, {});

До тих пір, поки все все гаразд.
Проблеми починаються, коли я хочу отримати доступ додитину безпосередньо або коли я оновлюю сторінку. Я все ще можу показати вміст файлу json у вигляді з ng-repeat. Але я не можу використовувати файл у дочірньому контролері. Я спробував цей код у дитини спробувати виявити проблему

  if($scope.services){ // in both cases it"s not null
var s="";
if($scope.selectedService)
s="NO refresh an NO direct access";
else
s="refresh or direct access";

console.log(s);
console.log("data : " + $scope.services);
console.log($scope.services.length);
console.log($scope.services)
}

І ось висновок введіть опис зображення тут введіть опис зображення тут введіть опис зображення тут

Може бути, дочірний контролер виконується перед батьком контролера? як я можу вирішити цю проблему?

Відповіді:

0 для відповіді № 1

Проблема в даному випадку, мабуть, називається батьком $ ресурс який має затримку, оскільки він витягує JSON з асинхронним HTTP-запитом.

Під час цієї затримки дочірній контролер буде виконувати.

Ви можете перевірити це, додавши консоль.log у головний контролер:

console.log("Starting Services.query()");
$scope.services = Services.query();

Потім ви побачите, що батьківський контролер виконує перед дитиною контролером.

Рішення для цього полягає в тому, щоб змінити логіку в дочірньому контролері, щоб вона не залежала від цього $scope.services бути доступним, коли створюється контролер.