2

AngularJS で週ごとに (ng-repeat を使用して) イベントのリストをページ分割しようとしています。現在の週のイベントのみを表示するカスタム フィルターが機能していますが、将来および過去の週を表示する機能を追加しようとしています。

イベントリストに使用しているフィルターは次のとおりです-

$scope.week = function(item) {
    var weekStart = moment().startOf('week');
    var weekEnd = moment().endOf('week');
    var eventTime = moment(item.jsdatetime);
        if (eventTime >= weekStart && eventTime <= weekEnd) return true; 
            return false;
};

ng-click を使用して、moment.js を .add(7, 'days'); に使用する関数を呼び出してみました。weekStart 変数と weekEnd 変数に追加しましたが、機能していないようです。

どんな助けでも大歓迎です。

これは、基本的な機能が実行されている CodePen です - http://codepen.io/drewbietron/pen/xbKNdK

4

2 に答える 2

1

weekStart 変数と weekEnd 変数は、week(item) のスコープ外には存在しません。これらの変数を変更しようとする関数を呼び出すために ngClick を使用している場合、未定義が返されます。あなたのレイアウトがどのようになっているかはわかりませんが、これらの 2 つの変数を week 関数の外に引っ張って $scope 変数にします。

さらに、2 つの $scope 変数を変更する関数を ngClick に呼び出させます (どちらの方向に進みたいかによって、7 を加算するか、7 を減算します)。

$scope.weekStart = moment().startOf('week');
$scope.weekEnd = moment().endOf('week');

$scope.week = function(item) {
    var eventTime = moment(item.jsdatetime);
    if (eventTime >= $scope.weekStart && eventTime <= $scope.weekEnd) return true; 
      return false;
    };

$scope.update= function(direction) {
    $scope.weekStart.add(direction, 'days');
    $scope.weekEnd.add(direction, 'days');
}

ビューに 2 つのボタンを作成します。

<a href="#" ng-click="update(-7)">Previous week</a>
<a href="#" ng-click="update(7)">Next week</a>
于 2014-11-11T18:42:43.677 に答える