Я делаю приложение Todo с помощью Angularjs. Я попытался использовать разбиение на страницы, которое будет отображать только 5 todos на страницу. Я мог бы добавить разбивку на страницы, но функция slice не работает в списке todos.функция фрагмента в JavaScript не работает для разбивки на страницы
Он говорит, что функция среза не определена. Я получил причину своего неопределенного поведения. Это связано с тем, что список задач не входит в область видимости, и мне почему-то нужно выводить список дел, чтобы он был доступен для следующей функции. Но с нулевым успехом я мог бы сделать это возможным.
Это мой код контроллера:
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. Это связано с тем, что к тому времени, когда служба извлекает todos из db, $ watch уже вызывается в списке с длиной 0 и, следовательно, не работает дальше.
Я даже попытался использовать код в this link.
Почему ты смотришь эти переменные? Я не понимаю. Просто добавьте метод обычной области, который вызывается, как только вы нажимаете на директиву paginator. –
Я сделал это, как показано в ссылке plunker, которую я только что приложил. Но это не удалось. Пожалуйста, помогите мне больше по этому поводу. –