我希望在我的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');
答案 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}}