ng-show / ng-hide基于函数调用

时间:2015-02-20 18:16:30

标签: ng-show date-comparison ng-hide

我正在尝试比较控制器功能中的两个日期,并根据控制器中的逻辑将true / false返回到ng-show和ng-hide,但它没有按预期工作,下面是plnkr相同。有人可以帮我弄清问题是什么。

http://plnkr.co/edit/CWvb1uy0PeYFb0Tf34rY?p=preview

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

app.controller('MainCtrl', function($scope,$filter) {
  $scope.name = 'World';
  $scope.SetDate=function(dt)
  {
    $scope.NewDt=$filter('date')(dt, 'shortDate');
     $scope.currentDate = $filter('date')(new Date(), 'shortDate');   
     $scope.parsedCurr=Date.parse($scope.currentDate);
     $scope.parsedFuture= Date.parse($scope.NewDt);

        if ( $scope.parsedCurr <$scope.parsedFuture) {
            return true;
        }  
  }

});

2 个答案:

答案 0 :(得分:1)

你否定了两次,你有:

<span ng-hide="!SetDate('2015-12-31T00:00:00')">

你需要

<span ng-hide="SetDate('2015-12-31T00:00:00')">

答案 1 :(得分:1)

如果你需要检查的是两个解析日期,我会在ng-show中进行检查以简化代码。

<span ng-show="parsedCurr < parsedFuture">
      You can see me!
</span>
<span ng-hide="parsedCurr < parsedFuture">
      You can't see me :(
</span>

或者,如果您不想使用该功能,只需稍微更改逻辑并使用ng-show或ng-hide。像这样:

$scope.SetDate=function(dt)
  {
    $scope.NewDt=$filter('date')(dt, 'shortDate');
     $scope.currentDate = $filter('date')(new Date(), 'shortDate');   
     $scope.parsedCurr=Date.parse($scope.currentDate);
     $scope.parsedFuture= Date.parse($scope.NewDt);

        if ( $scope.parsedCurr < $scope.parsedFuture) {
            return true;
        }  
        else
        {
            return false;
        }
  }

你的标记是这样的:

<span ng-show="SetDate('2015-12-31T00:00:00')">
          SHOW ME
</span>
<br>
<span ng-hide="SetDate('2015-12-31T00:00:00')">
          HIDE ME
</span>