Я прочитал в других ответах SO, что код, который не управляет представлением, должен быть доступен через services
. Тем не менее, у меня есть функция, которую я хочу разделить на несколько угловых контроллеров, которые обращающийся как $scope
, $rootScope
и $location
:AngularJS: Совместное использование функции между контроллерами
$scope.selectBatch = function (id) {
if (!id) {
$scope.batchSelected = false;
$rootScope.job = false;
$scope.data = allData;
$location.path('/', false);
} else {
$scope.batchSelected = id;
$rootScope.job = {'BatchId': id};
var arr = [];
for (var i = 0; i < allData.length; i++) {
if (String(allData[i].BatchId) === String(id)) {
arr.push(allData[i]);
}
}
$scope.data = arr;
$rootScope.go(id, 'batch');
}
};
В идеале, в каждом контроллере я хотел бы сделать что-то вроде:
$scope.selectBatch = services.selectBatch($scope, $rootscope, $location);
, чтобы загрузить эту функцию из службы, хотя это ощущение «не угловатое».
Что такое «Угловой»/MVC способ ввода такого рода функций в несколько контроллеров?
Как отличаются контроллеры? Можете ли вы просто повторно использовать один контроллер? – Phil
Нет, контроллеры очень различаются с точки зрения данных, которые они вносят и как они обрабатываются.Однако есть одна или две функции, которые используются совместно всеми контроллерами. – Jascination
Не имеет смысла модифицировать примитивы $ scope перед выполнением перенаправления. Никогда не нужно пропускать '$ scope' в службу/фабрику либо – charlietfl