AngularJS在div中显示如果日期是今天,否则显示在其他div中

时间:2016-06-19 08:23:49

标签: javascript angularjs angularjs-scope

我的想法是我的数组中有几个项目,它们有标题,公司和日期值。然后将这些显示在具有ng-repeat的div中。

我想要的是,如果日期值是今天的日期,它们将显示在第一个div中,如果日期值不是今天,则显示在不同的div中。 (理想情况下,我会在今天,昨天,上周等分开它们。)

它目前所做的是显示第一个div中的日期并将其日期显示为今天,即使该值未设置为数组中的值。第二个div完全是空的。

JS:

var app = angular.module("myApp", []);

app.controller("boardController", function($scope) {
    $scope.today= new Date();
    $scope.posts = [
       {
           "Title" : "Alfreds Futterkiste",
           "Company" : "Microsoft",
           "Date" : "2016-06-19",

        },{
            "Title" : "Berglunds snabbköp",
            "Company" : "IBM",
            "Date" : "2016-06-18",
        },{
            "Title" : "Centro comercial Moctezuma",
            "Company" : "MexaTel",
            "Date" : "2016-06-03",
        },{
            "Title" : "Ernst Handel",
            "Company" : "BlaBlaCar",
            "Date" : "2016-06-11",
        }
    ]
});

HTML的结构如下:

<body ng-controller="boardController">
        <!--  Products Container  -->
        <div class="col-xs-12 col-md-8 col-md-offset-2">
            <!--  Product Container  -->
            <h2>Today</h2>
            <div class="list-group-item" ng-repeat="post in posts">
                <div ng-if="post.Date = today">
                    <h3>
                        {{post.Title}}
                    </h3>
                    <h5>
                        {{post.Date | date : 'EEE MMM d'}}
                    </h5>
                </div>
            </div>
            <h2>Yesterday</h2>
            <div class="list-group-item" ng-repeat="post in posts">
                <div ng-if="post.Date > today">
                    <h3>
                        {{post.Title}}
                    </h3>
                    <h5>
                        {{post.Date | date : 'EEE MMM d'}}
                    </h5>
                </div>
            </div>
        </div>
    </body>

1 个答案:

答案 0 :(得分:4)

由于Date是一个字符串而today是Date对象,因此您需要将它们转换为相同类型才能正确比较。我会使用date filtertoday格式化为与Date相同的字符串:

app.controller("boardController", function($scope, $filter) {
    $scope.today = $filter('date')(new Date(), 'yyyy-MM-dd');
    // ...
});

然后在HTML中(注意===比较运算符)

ng-if="post.Date === today"