2016-07-15 26 views
1

我试图隐藏单元格(不是完整的行)包含日期等于DateTime.MinValue这基本上是0001-01-01T00:00:00如果它的ngTime重复隐藏属性DateTime.MinValue

这里是我的视图模型:

$scope.vm.users = [ 
    { 
     "Username": "user1", 
     "EarliestLogin": "0001-01-01T00:00:00", 
     "LatestLogin": "0001-01-01T00:00:00" 
    }, 
    { 
     "Username": "user2", 
     "EarliestLogin": "2016-07-15T11:18:19Z", 
     "LatestLogin": "2016-07-15T11:18:19Z" 
    }, 
    { 
     "Username": "user3", 
     "EarliestLogin": "0001-01-01T00:00:00", 
     "LatestLogin": "0001-01-01T00:00:00" 
    } 
]; 

表看起来像这样:

<table> 
    <tr> 
     <th>User Name</th> 
     <th>Earliest Login</th> 
     <th>Latest Login</th> 
    </tr> 
    <tr ng-repeat="user in vm.users"> 
     <td>{{user.Username}}</td> 
     <td>{{user.EarliestLogin | date:'short'}}</td> 
     <td>{{user.LatestLogin | date:'short'}}</td> 
    </tr> 
</table> 

电流输出:

User Name Earliest Login Latest Login 
user1 1/1/01 12:00 AM 1/1/01 12:00 AM 
user2 7/15/16 1:18 PM 7/15/16 1:18 PM 
user3 1/1/01 12:00 AM 1/1/01 12:00 AM 

所需的输出:

User Name Earliest Login Latest Login 
user1 
user2 7/15/16 1:18 PM 7/15/16 1:18 PM 
user3 

我能够使用在ng-repeat过滤器隐藏完整的行,但我不知道如何如果DateTime.MinValue ...

只隐藏单元格

这是我的plnkr

+0

马丁我无法理解有一件事,你想检查与最早的登录与最新的登录或最早的登录DateTime.MinValue ?? ?? –

+0

@SaE对不起,应该多澄清一点。我想隐藏每个等于'0001-01-01T00:00:00'的最早登录,与最新登录相同,但仍显示用户名 –

+0

您是否尝试过使用ng-if或ng-show作为我们的下面提到的队友?? –

回答

3

乍看之下,你可以创建一个辅助函数

$scope.vm.isDateTimeMinValue = function (value) { 
    return value === "0001-01-01T00:00:00"; 
}; 

且模板中

<tr ng-repeat="user in vm.users"> 
    <td>{{user.Username}}</td> 
    <td><span ng-hide="vm.isDateTimeMinValue(user.EarliestLogin)">{{user.EarliestLogin | date:'short'}}</span></td> 
    <td><span ng-hide="vm.isDateTimeMinValue(user.LatestLogin)">{{user.LatestLogin | date:'short'}}</span></td> 
</tr> 

Plunker

注意使用它!您可以使用相应的服务将"0001-01-01T00:00:00"定义为Angular JS constant

+0

这看起来很干净,非常感谢! –

1

使用NG-如果对TD手机内的跨度标签的情况下,以该$ scope.DateTime.MinValue是您需要的最小值的应对变量: <tr ng-repeat="user in vm.users"> <td>{{user.Username}}</td> <td><span ng-if="$scope.DateTime.MinValue != user.EarliestLogin">{{user.EarliestLogin | date:'short'}}</span></td> <td><span ng-if="$scope.DateTime.MinValue != user.LatestLogin ">{{user.LatestLogin | date:'short'}}</span></td> </tr>

+0

JavaScript中没有'DateTime.MinValue'。更重要的是,如果它应该在模板中使用字符串常量,那不是一个好的选择。 –

+1

是的,那不是那里,我预计它是一个范围变量,在你的情况下,问题是'​​'将隐藏起来。如果只有一个值匹配,比如EarliestLogin匹配和最近登录不匹配,那么表的结构将被破坏。 –

+0

我希望你明白我的观点 –