2016-12-02 60 views
0

替换默认的日期我有一个HTML跨度显示使用moment.js页面日期:如何用一个空字符串

<span data-bind="text: moment(new Date(dueDate())).format('MM/DD/YYYY')"></span> 

它的工作天晴如果dueDate()属性是一个空字符串,如果它是一个空字符串,我得到:

01/01/1900

怎样才能避免呢?

这是整个DIV:

<div class="col-md-8"> 
    <ul> 
     <li>DATE <span data-bind="text: moment(new Date(sDate())).format('MM/DD/YYYY')"></span></li> 
     <li>Due date <span></span><span data-bind="text: moment(new Date(dueDate())).format('MM/DD/YYYY')"></span> 
      <p>Days Remaining: <span class="days-remaining" data-bind="text: daysRemaining"></span></p> 
     </li> 
     <li>Date 2 <span></span><span data-bind="text: moment(new Date(date2())).format('MM/DD/YYYY')"></span> 
      <p>Days Remaining: <span class="days-remaining" data-bind="text: daysRemaining"></span></p> 
     </li> 
    </ul> 
</div> 
+0

使用if条件,测试,如果字符串为空 – xShirase

+0

我不知道如何在这种情况下添加一个'if'。 – user3378165

+0

您可以检查这个问题的答案http://stackoverflow.com/questions/10577078/knockout-js-data-bind-text-default-value –

回答

2

你将不得不增加一个检查。如果值存在,则解析值,否则显示空白。

this.getDateInFormat = function(str){ 
    var d = moment(str, DEFAULT_FORMAT); 
    return str && d.isValid() ? d.format('MM/DD/YYYY') : ''; 
} 

正如之前的评论,则应该将所有解析逻辑移动到您的视图模型。这样你的代码是通用的,你的视图是干净的。

JSFiddle

+0

什么是'DEFAULT_FORMAT'参数? – user3378165

+0

如果您正在解析字符串,则矩矩阵构造函数需要一种格式。它只是一个包含“DD/MM/YYYY”的变量。你应该读小提琴的代码 – Rajesh

+0

我没有注意到小提琴,工作,非常感谢你! – user3378165

相关问题