Я работаю с проектом. Я использую pagination, checkAll, deleteAll, как функции, которые являются общими для всех контроллеров. Я хочу переместить код на завод или услугу, поэтому его можно использовать для всех контроллеров. Я старался, но не ясно, с совершенством. Я хочу намекнуть. Я знаю, чтобы создать фабрику или сервис, и как проинформировать его о контроллере, но немного путать с логикой перемещения аналогичного кода.Объединение общей функции в контроллерах AngularJS
Я приводил пример, который я использую для записи во всем контроллере, Logic for Sorting и pagination.
$scope.bigCurrentPage = 1;
$scope.editIndex = "";
var sortKey = "name";
var sortDirection = "ASC";
$scope.filterObj = {order: [sortKey + " " + sortDirection], limit: CONFIG.limit, offset: 0};
$scope.filterObj.offset = ($scope.bigCurrentPage - 1) * CONFIG.limit;
$scope.sortList = function (inputSort) {
if (sortKey === inputSort) {
sortDirection = (sortDirection === "ASC") ? "DESC" : "ASC";
} else {
sortKey = inputSort;
}
$scope.filterObj.order = [sortKey + " " + sortDirection];
$scope.pageChanged();
}
$scope.getSongs = function() {
$scope.filterObj.offset = ($scope.bigCurrentPage - 1) * CONFIG.limit;
Song.find({filter: $scope.filterObj})
.$promise
.then(function (data) {
$scope.items = data;
$scope.maxSize = 5;
$scope.size = $scope.filterObj.limit;
$scope.countingIndex = ($scope.bigCurrentPage - 1) * $scope.filterObj.limit; //Its idea to implement counting. Variable is not part of pagination..////
});
};
$scope.pageChanged = function() {
$scope.getSongs();
};
$scope.pageChanged();
Таким образом, предположим, что я делаю это для альбомов и я хотел бы изменить SortKey как «ид», будет использовать услуги с «Album.find», изменит объект «фильтр», и я сделал, но факт Я использую общий код во всех контроллерах. Как бы я написал это лучше.
Поскольку вы используете кучу $ scope, тогда услуги не подходят. Сделайте себе базовый класс контроллера и наследуйте его. – Cerad