angular ng show不显示数据

angular ng-show doesnt show data

本文关键字:显示 数据 show ng angular      更新时间:2023-09-26

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

如果有任何建议,我将不胜感激。

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

这意味着"嘿,Angular,如果$scope.checkDate === true,则显示此div"

似乎你想调用你的$scope.dates项目的checkDate()方法

要进行此调用,请使用<div ng-show="d.checkDate()">

但您的checkDate()$scope.thisDatenew Date()进行比较,但在$scope中没有thisDate变量,因此结果是false,角度ng-show指令将隐藏所有div

存在一些问题。

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

希望这能有所帮助。

您有两个问题。

  1. checkDate在函数方面是不正确的。在最后一条else语句中不返回任何值。

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