2013-06-14 4 views
2

Я руководства Полотенца Горячие Джона папиных и у меня есть C# класс, который выглядит следующим образом:Форматирование Даты, полученные Breeze с использованием moment.js. Горячее Полотенце Шаблон

public class Lead 
{ 
    public int LeadId { get; set; } 
    public DateTime? LastContactMade { get; set; } 
    public DateTime? LastContactAttempt { get; set; } 
} 

Я извлечение данных в клиенте с ветерком, но я не могу понять, как форматировать дату с использованием moment.js и knockout.js. Когда я отображать дату не-отформатирован с использованием связывания следующего нокаута:

<section data-bind="foreach: leads"> 
    <span data-bind="text: lastContactMade"></span> 
    <span data-bind="text: lastContactAttempt"></span> 
</section> 

Даты отображаются в следующем формате:

Wed Feb 27 2013 03:28:00 GMT-0800 (Pacific Standard Time) 

Когда я пытаюсь форматировать их, используя moment.js следующим образом:

<section class="article-list" data-bind="foreach: leads"> 
    <span data-bind="text: moment(lastContactMade).format('l LT')"></span> 
    <span data-bind="text: moment(lastContactAttempt).format('l LT')"></span> 
</section> 

полученный результат выглядит следующим образом:

NaN/NaN/0NaN 12:NaN AM 

Я также попытался сделать форматирование в моем LeadInitializer, расположенной в моей модели (что я предпочитаю), делая это:

function leadInitializer(lead) { 
    lastContactAttempt = lead.lastContactAttempt; 
    lastContactMade = lead.lastContactMade; 
    lead.lastContactAttempt = ko.computed({ 
     read: function() { 
      return moment(lastContactAttempt).format('l LT'); 
     }, 
     write: function() { 
      return lastContactAttempt; 
     } 
    }); 
    lead.lastContactMade = ko.computed({ 
     read: function() { 
      return moment(lastContactMade).format('l LT'); 
     }, 
     write: function() { 
      return lastContactMade; 
     } 
    }); 
}; 

Делая это, я все еще получаю тот же результат:

NaN/NaN/0NaN 12:NaN AM 

я читал пост в

Date formatting issues with Knockout and syncing to breeze.js entityAspect modified

но это не похоже, чтобы помочь я здесь. Может кто-нибудь, пожалуйста, покажите мне, где я ошибаюсь?

ответ

6

Я думаю, что вы просто забыли распаковывать Knockout наблюдаемыми:

// add parentheses here......................vv 
<span data-bind="text: moment(lastContactMade()).format('l LT')"></span> 
<span data-bind="text: moment(lastContactAttempt()).format('l LT')"></span> 

При загрузке объект с Breeze, все объекты будут созданы как Knockout наблюдаемыми. Вы можете использовать эти наблюдаемые данные непосредственно в своих привязках к нокауту data-bind, но так как moment.js не знает, что делать с наблюдаемым нокаутом, вы должны сначала развернуть наблюдаемое, чтобы получить значение простой даты JavaScript.

+0

Спасибо большое, очень ценим! –

Смежные вопросы