moment()
всегда возвращает текущую дату/время.
Вам нужно сохранить ссылку на нее переменной, а затем использовать ее для манипуляций.
(и поскольку у вас есть другие переменные, зависящие от него, я бы создать функцию, которая устанавливает все эти переменные сразу)
Так в контроллере я изменил верхнюю часть к
var currentDate,
weekStart,
weekEnd,
shortWeekFormat = 'MMMM Do';
function setCurrentDate(aMoment){
currentDate = aMoment,
weekStart = currentDate.clone().startOf('week'),
weekEnd = currentDate.clone().endOf('week')
}
// initialize with current date
setCurrentDate(moment());
// use these methods for displaying
$scope.currentWeek = function(){ return currentDate.format(shortWeekFormat); };
$scope.currentWeekStart = function(){ return weekStart.format(shortWeekFormat); };
$scope.currentWeekEnd = function(){ return weekEnd.format(shortWeekFormat); };
Тогда создать два метода для перехода к следующей/предыдущей неделе
$scope.nextWeek = function(){
setCurrentDate(currentDate.add(7,'days'));
};
$scope.prevWeek = function(){
setCurrentDate(currentDate.subtract(7,'days'));
};
(момент.JS реализует valueOf
так вы делаете прямые сравнения)
И, наконец, изменить свой недельный фильтр на самом деле сравнить даты (
с помощью .isSame()
, .isBefore()
и .isAfter()
) вместо объектов момент (
, который был неправ, как вы не можете сделать прямое сравнения на пользовательские объекты)
$scope.week = function(item) {
var eventTime = moment(item.jsdatetime);
if ((eventTime.isSame(weekStart) || eventTime.isAfter(weekStart))&&
(eventTime.isSame(weekEnd) || eventTime.isBefore(weekEnd))) return true;
return false;
};
$scope.week = function(item) {
var eventTime = moment(item.jsdatetime);
return (eventTime >= weekStart && eventTime <= weekEnd);
};
(вы также, скорее всего, хотят ng-repeat
на li
элементов, а не ul
)
Демо наhttp://codepen.io/gpetrioli/pen/QwLRQB
могли бы вы создать базовый plunker для демо, что делается? Вот шаблон для запуска: http://plnkr.co/edit/TkONdJqtD6nSg6s0Da59?p=info причина заключается в том, что нам нужно увидеть больше кода, чтобы помочь вам. – SoluableNonagon
@EliteOctagon - Я добавил пример CodePen к своему оригинальному сообщению – Drewbietron