Meanjs Как связать один запрос с другим контроллером

У меня есть один crud-модуль под названием article и другой под названием Devices. Я бы хотел, чтобы данные из статьи crud-module были и в статье об устройстве. У кого-нибудь есть идея, как это реализовать?

devicesApp.controller('DevicesController', ['$scope', '$stateParams', '$location', 'Authentication', 'Devices','$modal', '$log',
function($scope, $stateParams, $location, Authentication, Devices, $modal, $log) {
    $scope.authentication = Authentication;
    $scope.devices = Devices.query();   

И вот мой запрос статей

$scope.articles = Articles.query();

person user3083272    schedule 04.03.2015    source источник


Ответы (1)


Вы не можете (и не должны) общаться с такими контроллерами. Чтобы этот код работал, статьи и устройства должны быть фабриками или службами.

devicesApp.factory('Articles', function(){
  return {
    query: function(){
      return {/*Your data here*/};
    };
  };
});
person HankScorpio    schedule 04.03.2015
comment
Ваш следующий лучший вариант — общаться между контроллерами через события. - person HankScorpio; 04.03.2015
comment
Статья и устройство - это два грубых модуля, поэтому я бы использовал фабрики для вызова запроса статей? - person user3083272; 04.03.2015
comment
Мое текущее возможное / неработающее решение находится на странице просмотра списка устройств. Я добавил контроллер статей, но, похоже, он ничего не вызывал. - person user3083272; 04.03.2015
comment
Вы их изготавливали или где-то есть на них документация? Если они уже являются фабриками/сервисами, то у вас должен быть их экземпляр в вашем контроллере (вам не было ясно, какие трудности возникают у вас с query()). Можете ли вы показать нам, как выглядит функция query()? - person HankScorpio; 04.03.2015
comment
Если они где-то запрашивают сервер, это, вероятно, будут асинхронные вызовы, но ваш код ожидает синхронный ответ. Надеюсь, query() возвращает обещание. Если да, то ваш код будет примерно таким: Devices.query().then(function(data){/*сделать что-нибудь с данными*/}); - person HankScorpio; 04.03.2015
comment
Большое спасибо! Я изучил сервис и заставил его работать - person user3083272; 05.03.2015