У моїй батьківській області я отримую 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
бути доступним, коли створюється контролер.