角度ng-show不显示数据

问题描述:

我想过滤日期。应显示当前日期并隐藏未来日期。但是每当我使用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/

我将感谢任何意见。

有几个问题。

- 您应该使用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

您有2个问题。

  1. checkDate在功能上是不正确的。您在最后的else声明中不返回任何值。

  2. 而不是ng-show="(checkDate==true)"你应该写:ng-show="d.checkDate()"

<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