Этот вопрос может включать использование фильтров Angular или что-то еще, о чем я не подумал. У меня возникают проблемы с удалением моих задач из одного шаблона и сохранением их в другом, когда срок действия в моем списке задач истек. Я использую angularfire для базы данных.
То, что у меня есть сейчас, это список дел, в котором содержится запрос на что-то «дело» и дату завершения. Если пользователь не выполнил задачу в течение 7 дней, задача удаляется и должна быть помещена в таблицу сроков действия. Задача с истекшим сроком действия помещается в таблицу «Просроченные задачи», за исключением того, что задача не удаляется из «текущего» списка задач.
Вопрос. Как удалить задачу из списка текущих задач, оставив ее в списке задач с истекшим сроком действия? Еще одна проблема, с которой я столкнулся, заключается в том, чтобы заставить базу данных Firebase обновить «expired» с «false» на «true». Я знаю, что он делает это в браузере, потому что я поставил на него $watch, но он не переходит в БД.
Любые подсказки будут очень признательны!
(Я думаю, что одна часть — это то, как я сделал фильтр, но есть что-то еще, что я точно упускаю.)
Внутри углового контроллера:
$scope.addTodo = function() {
$scope.todos.$add({
text: $scope.newTodo,
date: $scope.newDate,
done: false,
expired: false
});
$scope.newTodo = '';
$scope.newDate = '';
};
$scope.removeTodo = function(todo) {
$scope.todos.$remove(todo);
};
$scope.todoChange = function(todo) {
if(todo.done && $scope.show === 'Complete'){
return true;
} else if(!todo.done && $scope.show === 'Current'){
return true;
} else {
return false;
}
};
$scope.todoExpired = function(todo) {
var today = new Date();
var fDate = new Date(todo.date);
fDate.setDate(fDate.getDate() + 7);
if (today > fDate) {
return true;
} else {
return false;
}
};
Вот частичный HTML для таблиц:
Текущая страница:
<tr class='results' ng-repeat='(id, todo) in todos | filter:todoChange'>
<td><span>{{$index + 1}}</scan></td>
<td><span>{{todo.text}}</span></td>
<td><span>{{todo.date}}</span></td>
<td><input type='checkbox' ng-model='todo.done' ng-change='todos.$save(todo)'></td>
<td><button class='btn btn-danger' ng-click='removeTodo(todo)'>Delete</button></td>
</tr>
Срок действия страницы:
<tr class='results' ng-repeat='todo in todos | filter:todoExpired'>
<td><span>{{$index + 1}}</scan></td>
<td><span>{{todo.text}}</span></td>
<td><span>{{todo.date}}</span></td>
<td>Expired</td>
<td><button class='btn btn-danger' ng-click='removeTodo(todo)'>Delete</button></td>
</tr>
ОБНОВЛЕНИЕ:
Выяснил, что мне нужно было поместить ng-hide='todoExpired(todo)'
в таблицу. Это сделало все задачи с истекшим сроком действия скрытыми на текущей странице и просматриваемыми только на странице с истекшим сроком действия.