【发布时间】:2015-04-18 18:30:43
【问题描述】:
我正在处理这个项目。我正在使用所有控制器之间通用的分页、checkAll、deleteAll 等功能。我希望将代码移至工厂或服务部门,以便可用于所有控制器。我试过但不清楚是否完美。我要提示。 我知道创建工厂或服务,以及如何集成它控制器但有点混淆移动类似代码的逻辑。
我给出了我在所有控制器中使用的示例,以及用于排序和分页的逻辑。
$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 更改为“id”,将使用带有“Album.find”的服务,将更改“过滤器”对象,我完成了,但事实是我正在使用所有控制器中的通用代码。如何写得更好。
【问题讨论】:
-
既然你使用了一堆 $scope 那么服务就不合适了。让自己成为一个基本控制器类并从它继承。
标签: javascript angularjs angularjs-scope angularjs-controller code-reuse