Контроллер страницы
function sortReorder(col,e,scope) {
if (e.shiftKey) {
var sortIndex = 0;
angular.forEach(scope, function(el) {
if (Math.abs(el.sort)>sortIndex) sortIndex = Math.abs(el.sort);
});
angular.forEach(scope, function(el) {
if (el.name==col) el.sort = el.sort?-el.sort:sortIndex+1;
});
} else {
angular.forEach(scope, function(el) {
if (el.name==col) el.sort = el.sort>0?-1:1; else el.sort = null;
});
}
};
function UsersCtrl($scope, $routeParams, $location, Users) {
$scope.items = Users.query(function(data){
$scope.paginator.setPages($scope.items.length);
var i = 0;
angular.forEach(data, function(v,k) {
data[k]._id = i++;
});
});
$scope.selected = [];
$scope.paginator = {
count: 20,
page: 1,
pages: 1,
setPages: function(itemsCount){ this.pages = Math.ceil(itemsCount/this.count); }
};
$scope.sortBy = function() {
var order = [];
angular.forEach($scope.tablehead, function(h){
if (h.sort>0) order[h.sort-1] = h.name;
if (h.sort<0) order[Math.abs(h.sort)-1] = '-'+h.name;
});
return order;
};
$scope.sortReorder = function(col,e) { sortReorder(col,e,$scope.tablehead); };
}
Обратите внимание на sortReorder, это удалось превратить в функцию... и вызывать ее в разных контроллерах...
А вот из вот этого
$scope.sortBy = function() {
var order = [];
angular.forEach($scope.tablehead, function(h){
if (h.sort>0) order[h.sort-1] = h.name;
if (h.sort<0) order[Math.abs(h.sort)-1] = '-'+h.name;
});
return order;
};
не получается, и вот из этого в особенности хочется, так как это то что может правильно перегрузить содержимое таблицы на странице
$scope.items = Users.query(function(data){
$scope.paginator.setPages($scope.items.length);
var i = 0;
angular.forEach(data, function(v,k) {
data[k]._id = i++;
});
});
Оба кода уникальны для всех страниц, сейчас у меня их уже 8... и в каждом контроллере страницы есть одинаковые куски кода...
Я понимаю что может я говорю как Ламер... но я очень хочу разобраться...