Я работаю против двух списков в SharePoint, поэтому в моем проекте у меня есть три контроллера, один главный контроллер и один для каждого списка SharePoint. Мои списки - это элементы и задачи. У одного предмета может быть несколько задач.Два контроллера, вызывающие функции друг от друга
Когда я хочу, чтобы просмотреть элемент, в контроллере ITEMLIST я это делаю:
$scope.loadItem = function(id){
var promise = ItemService.getItem(id);
promise.then(function(item){
$scope.viewItem(item);
}, function(err){console.log(err);})
};
Затем, когда я хочу, чтобы загрузить задачи у меня есть это в TaskList контроллер
$scope.loadTasks = function(parentId){
var promise = TaskService.getTasks(parentId);
promise.then(function(result){
console.log(result);
}, function(err){console.log(err);})
};
Вот проблема, когда я загружаю свой объект $ scope.loadItem(), я также хотел бы загружать связанные с этим задачи , но эта функция находится в другом контроллере (чтобы все было в порядке).
Это, как я думаю, это будет выглядеть так:
$scope.loadItem = function(id){
var promise = ItemService.getItem(id);
promise.then(function(item){
$scope.loadTasks(item.Id);
$scope.viewItem(item);
}, function(err){console.log(err);})
};
Но я могу только сделать это происходит двумя способами, а именно путем перемещения мои loadTasks функции либо тот же контроллер, как loadItems или главный контроллер (потому что они оба наследуют от этого), , но это испортит мой код.
Как я могу вызвать функцию loadTasks, с моего контроллера itemList, не создавая неправильные функции в неправильных контроллерах и, таким образом, испортил мой код?
Может создать службу, которая обрабатывает запросы и что все контроллеры доступа? – Adwaenyth
Adwaenyth прав. Вы должны использовать услугу. –