5

<input type="date"/>Emberjs でを作成しようとしていますが、 2 つの問題があります。

  1. 私の国では、日付は DD-MM-YYYY 形式で表示されますが、日付フィールドには MM-DD-YYYY 形式が必要です (その後、ブラウザはロケールに従って表示します)。したがって、ブラウザが日付入力フィールドをサポートしている場合は日付をフォーマットする必要があり、サポートしていない場合は別の方法でフォーマットする必要があります。
  2. 日付は Date オブジェクトにバインドされています

書式設定と Ember Data に Momentjs を使用しています。

私は Ember.TextField を次のように拡張しようとしています:

App.DateField = Ember.TextField.extend
  value: ( (key, value) ->
    if value?
      if /Date/.test value.constructor #I assume that if the passed value is a Date object then it is arriving directly from the model
        if Modernizr.inputtypes.date
          moment(value).format('YYYY-MM-DD')
        else
          moment(value).format('DD-MM-YYYY')
      else # if the passed value is not a Date object then the user is typing into the form
        if Modernizr.inputtypes.date
          value = new Date('value')
        else
          value

  ).property()

  type: 'date'

日付入力をサポートするブラウザーでは、これが機能します。他のブラウザーでは、日付は正しく表示されますが、モデルに (間違った形式の) 文字列として保存されます。

バックエンドで Date オブジェクトを使用しながら正しいフォーマットを維持するにはどうすればよいですか?

デモ

アップデート

受け入れられた回答で提供されたブログ投稿のおかげで、デモを更新してやりたいことを実行できました(いくつかの奇妙な点がありますが、現時点では関係ありません)

デモ2

4

2 に答える 2

2

次の 2 つのブログ投稿をご覧ください。

これは単純な日付ピッカーです: http://hawkins.io/2013/06/datepicker-in-ember/ これはブートストラップの日付ピッカーを使用しています http://hawkins.io/2013/06/fancy-ember-datepicker- with-twitter-bootstrap/

うまくいけば、それが役立つでしょう

于 2013-07-10T13:09:53.817 に答える
2

文字列のユースケースの解析は見られません。Date.parseユーザーが入力した文字列を Date オブジェクトに変換するようなものを使用する必要があります。

if Modernizr.inputtypes.date
  value = new Date(value)
else
  value = Date.parse(value)
于 2013-07-10T11:46:58.617 に答える