2016-06-19 8 views
1

アイデアは、タイトル、会社、日付の値を持つ配列の中にいくつかの項目があることです。これらはng-repeatでdivに表示されます。AngularJSは日付が今日であれば表示、そうでなければ他のdivで表示

日付の値が今日の日付の場合は最初のdivに表示され、日付の値が今日のものでない場合は別のdivに表示されます。 (理想的には、今日、昨日、先週などにそれらを区切ります)

現在のように、値が設定されていなくても、最初のdivの日付を今日の日付として表示します配列内にあります。 2番目の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は次のように構成されていますDate以来

<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> 
+0

'='割り当てが、ある '=='と '==='は比較演算子です。それが変更された@elclanrs、 – elclanrs

+0

は、最初のdivまたは2番目のdivには何も表示されません。 – PaulVO

+0

「今日」の日付は過去の他のどの日付よりも遅くはないと私は信じている。 –

答えて

4

が文字列とtodayでは、あなたがするために、同じタイプにそれらの両方をキャストする必要がDateオブジェクトであります適切に比較する。私はDateと同じ文字列にtodayをフォーマットするdate filterを使用します。

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

をして、HTMLにあなたが持っているでしょう(注意===比較演算子)

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

恐ろしい!それはまさに私が気にしたように機能します。 私に尋ねるのが気にならない場合、2日目のdivの日付を今日よりも古いものの、1週間以上はないものにするにはどうしますか? – PaulVO

+0

'post.Date> today'も私が投稿したものでうまくいくはずです。 – dfsq

+0

しかし、例えば '$ scope.yesterday'の設定についてどう思いますか? 私は '$ scope.yesterday = $ filter( 'date')(新しい日付()。setDate($ scope.today.getDate() - 1)、 'yyyy-MM-dd');それは動作していないようです。 – PaulVO

関連する問題