html视图上的Angular ng-if表达式

时间:2017-03-16 16:19:23

标签: angularjs

我希望在我的html中显示一个日期值(带有管道表达式),但前提是该日期存在。 如果该字段返回null,那么我将在控制器js代码中用N/A替换它。

我认为这应该很简单,但我在使用它时遇到了一些麻烦。

当前显示日期,如果日期为空,则只显示空白。

<div>
   <label> 
   {{ctrl.data.myDate | stringToDate:'yyyy-MM-dd'}}
   </label>
</div>

我正在尝试:

<div>
       <label> 
       <span ng-if="ctrl.data.myDate!='N/A'">
          {{ctrl.data.myDate | stringToDate:'yyyy-MM-dd'}}
       </span>
       </label>
       
       <label> 
       <span ng-if="ctrl.data.myDate=='N/A'">
          N/A
       </span>
       </label>
       
</div>

但是,当日期为null时,它会显示N/A

这样可行,但没有管道表达式 - 但是,我需要正确地管道日期字符串:

 <span>{{vm.data.myDate==='N/A' ? "N/A" : vm.data.myDate }}</span>

更新

我正在尝试使用Angular $filter提供程序的不同方法。因此,如果myDate为NOT NULL,我可以在js控制器中格式化日期:

  vm.data.myDate = $filter('date')(new Date(data[0].closeDate), 'yyyy-MM-dd');

2 个答案:

答案 0 :(得分:1)

 <span>
{{ (vm.data.myDate==='N/A' || !vm.data.myDate) ? "N/A" : (vm.data.myDate | date:'yyyy-MM-dd') }}
</span>

答案 1 :(得分:1)

在一个变量中具有视图值和模型值是错误的方法。你应该遵循以下之一:

仅存储模型值,因此js中的日期可以为null,并且在html:

{{ctrl.data.myDate | date:'yyyy-MM-dd' || 'N/A'}}

或者你也存储了视图值,然后你应该在控制器中解析它:

     ctrl.data.myDateText = $filter('date')(ctrl.data.myDate, 'yyyy-MM-dd'); || 'N/A'
in html: {{ctrl.data.myDateText}}