【发布时间】:2016-02-29 12:51:34
【问题描述】:
我正在使用 Angularjs 做一个 Todo 应用程序。我尝试使用分页,每页只显示 5 个待办事项。我可以添加分页,但切片功能不适用于待办事项列表。
它表示未定义的切片函数。我得到了其未定义行为的原因。这是因为 todo 列表不在范围内,我需要以某种方式将 todo 列表取出,以便它可以用于下一个函数。但如果成功率为零,我可以让它成为可能。
这是我的控制器代码:
todoApp.controller('mainController', ['$scope', '$filter', 'Todos', function($scope, $filter, Todos) {
$scope.formData = {};
$scope.loading = true;
$scope.count = 0;
$scope.filteredTodos = [];
$scope.currentPage = 1;
$scope.numPerPage = 5;
$scope.maxSize = 5;
// GET =====================================================================
// when landing on the page, get all todos and show them
// use the service to get all the todos
//$scope.todos = [];
Todos.get()
.success(function(data) {
$scope.todos = data;
// for(var i = 0; i < data.length; i++) {
//$scope.todos.push(data[i]);
//}
$scope.loading = false;
angular.forEach($scope.todos, function(todo){
todo.formattedCreatedOn = $filter('date')(new Date(todo.createdOn),'MMM dd, yyyy - hh:mm a');
});
});
$scope.$watch('currentPage + numPerPage', function() {
var begin = (($scope.currentPage - 1) * $scope.numPerPage);
var end = begin + $scope.numPerPage;
$scope.filteredTodos = $scope.todos.slice(begin, end);
});
}]);
$scope.todos,我需要以某种方式将其置于当前范围之外。所以它不适用于function $scope.todos.slice(begin,end)。
另一件事是 $watch 函数在 todos 列表构建之前被调用。这是因为当服务从 db 检索待办事项时,$watch 已经在长度为 0 的列表上被调用,因此无法进一步工作。
我什至尝试使用this link 中的代码。
【问题讨论】:
-
你为什么关注那些变量?我不明白。只需添加一个普通范围方法,一旦您单击分页器指令就会调用该方法。
-
我按照我刚刚附上的 plunker 链接所示做了。但这并不成功。请帮助我更多。
标签: javascript angularjs pagination slice