2015-02-20 8 views
0

Я пытаюсь сравнить две даты в функции контроллера и возвращать true/false в ng-show и ng-hide на основе логики в контроллере, но это не работает, как ожидалось, ниже - plnkr для того же самого. Может кто-то, пожалуйста, помогите мне выяснить, в чем проблема.ng-show/ng-hide на основе вызова функции

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; 
     } 
    } 

}); 

ответ

1

Вы дважды отрицая, у вас есть:

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

и вам нужно

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

спасибо marjes, я заметил, что и исправить ее. я на самом деле использую это в ng-repeat для списка, к сожалению, он применяется правильно для некоторых ли, а не для некоторых ... любая идея, какова может быть причина –

+0

Возможно, вы можете поместить код в plnkr или сделать снимок , на данный момент я думаю, что если он работает для части, это потому, что в некоторых «ли» вы отправляете неверный var, возможно, у вас есть массив с несколькими строками с плохими данными. – marjes

+0

Ajay Srikanth. Не забывайте, выберите ответ, который вам помог – marjes

1

Если все, что вам нужно проверить, являются два разобранные даты я бы выполните проверку в ng-show, чтобы упростить код.

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

Или, если вы wan't использовать Funtion только немного изменить логику и использовать либо нг-шоу или нг скрытие. Как это:

$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>