Я использую AngularJS, и у меня есть 2 контроллера, которые являются родными. Первый контроллер получает данные из запроса $ http по клику. Второй контроллер должен получить эти данные, но я не знаю, как этот контроллер будет получать данные, потому что он должен ждать функцию в первом контроллере, прежде чем он сможет получить свои данные.
Это первый контроллер:
$scope.getMessageData = function(username, full_url, main_item, item_id, sub_id){
$scope.ajax_spinner = true;
$http({
method: "GET",
url: "/getMessageData",
params:{
"adUsername" : username,
"fullUrl" : full_url,
"mainItem" : main_item,
"tagId" : item_id,
"subId" : sub_id
}
}).then(function successCallback(response) {
$scope.adUsername = response.data.adUsername;
$scope.fullUrl = response.data.fullUrl;
$scope.main_item = response.data.main_item;
$scope.message = response.data.docs[0];
$scope.sub_item = response.data.sub_docs[0];
$scope.ajax_spinner = false;
Data.setItem($scope.message)
});
};
Фабрика, которую я использую для обмена данными со вторым контроллером:
App.factory('Data', function(){
return {
setItem: function(item){
this.item = item;
},
getItem: function(){
return this.item;
}
};
});
Второй контроллер:
App.controller("dataController", function($scope, $http, $sce, Data){
$scope.message = Data.getItem();
console.log($scope.message)
});
Теперь, очевидно, $ scope.message не определен, потому что контроллер уже загружается при загрузке страницы, но функция getMessageData не готова к вызову, так как я могу «дождаться» загрузки второго контроллера, прежде чем getMessageData будет запущен?