2014-10-04 89 views
0

我想過濾日期。應顯示當前日期並隱藏未來日期。但是每當我使用ng-show時,一切都會關閉。看到自己 - 這裏是小提琴角度ng-show不顯示數據

<div ng-controller="date"> 
    <div ng-repeat="d in dates"> 
     <ul> 
      <div ng-show="(checkDate==true)"><li>{{d.thisDate() | date:"mediumDate"}}</li></div> 
     </ul> 
    </div> 
</div> 

http://jsfiddle.net/adeling/Tb9j5/22/

我將感謝任何意見。

回答

1

有幾個問題。

- 您應該使用ng-show =「d.checkDate()」。

<div ng-app="milo"> 
<div ng-controller="date"> 
    <div ng-repeat="d in dates"> 
    <ul> 
     <div ng-show="d.checkDate()"> 
     <li>{{d.thisDate() | date:"mediumDate"}} 
     </li> 
     </div> 
    </ul> 
    </div> 
</div> 

- 你不能比較兩個新的日期,並期望他們是平等的。例如,如果您嘗試此操作,它將返回false。

alert(new Date() == new Date()); 

- 你不能在每個元素的作用域中引用你的函數thisDate。它是未定義的。你應該像訪問一個函數一樣訪問它,否則你會得到函數本身,而不是函數的結果。所以你的代碼可以被重構成這樣的東西。

var milo = angular.module('milo',[]); 

alert(new Date() == new Date()); 

function date($scope){ 

    $scope.dates = [ 
    { 
     id: 0, 
     thisDate: function(){ 
      return new Date(); 
     }, 
     checkDate: function(){ 
      if(this.thisDate()>new Date()){ 
       return false; 
      } 
      else { 
       return true; 
      } 
     } 
    }, 
    { 
     id: 1, 
     thisDate: function(){ 
      return new Date(); 
     }, 
     checkDate: function(){ 
      if(this.thisDate()>new Date()){ 
       return false; 
      } 
      else { 
       return true; 
      } 
     } 
    }, 
    { 
     id: 2, 
     thisDate: function(){ 
      return 141232741945463; 
     }, 
     checkDate: function(){ 
      if(this.thisDate()>new Date()){ 
       return false; 
      } 
      else { 
       return true; 
      } 
     } 
    } 
    ]; 
}; 

milo.controller('date', date); 

希望這會有所幫助。

+0

感謝佩德羅,你的回答是真正有幫助和教學:) – codeman 2014-10-05 12:24:37

1

您有2個問題。

  1. checkDate在功能上是不正確的。您在最後的else聲明中不返回任何值。

  2. 而不是ng-show="(checkDate==true)"你應該寫:ng-show="d.checkDate()"

2
<div ng-show="(checkDate==true)"> 

這意味着 「嘿,角,顯示此div如果$scope.checkDate === true

好像你想打電話給你的$scope.dates項目checkDate()方法

爲此呼叫使用<div ng-show="d.checkDate()">

但您的checkDate()$scope.thisDatenew Date(),但沒有thisDate變量在$scope,所以結果是false和角度ng-show指令將隱藏所有你的div