13

ノックアウトのテンプレートで日付をフォーマットしたいと思っています。日付は現在次のように返されています

2013-07-04T00:00:00

のように表示させたい

07/04/2013

これが私が使用しているバインディングです

<td data-bind="text: FirstDate">

Knockout のテンプレートの既定の書式設定プロパティですか?

4

3 に答える 3

29

Knockout では、日付の書式設定や一般的な書式設定に関して何も組み込まれていません。バインディングはtextプロパティ値を文字列に変換するだけなので、カスタム フォーマットが必要な場合は自分で行う必要があります。

JavaScript で日付を操作するのはそれほど簡単ではないため、moment.jsなどのサードパーティ ライブラリを使用する方がよいでしょう。format使い方はとても簡単で、メソッドで日付をフォーマットできます。'L'必要な月の数値、月の日、年の書式設定用に組み込みの書式があります。

ビューモデルでモーメントjsを使用するか、次のようにバインディングで直接使用できます。

<td data-bind="text: moment(FirstDate).format('L')">

または、このフォーマット ロジックをカプセル化するカスタム バインディング ハンドラーを作成することもできます。

注:データ バインディング式の内部で値を取得する場合は、必ずプロパティで使用()してください。FirstDateko.observable

于 2013-07-03T19:05:49.640 に答える
2

Stephen Redd の date extender の修正版で moment.js を使用しています。これは、データ バインドで関数を呼び出すよりも少しクリーンです。

<input type="text" data-bind="value: dateOfBirth.formattedDate" />
于 2013-07-07T22:19:06.590 に答える