0

問題: "2012-11-11T04:27:25Z" (Rails アプリからのデフォルトの日付出力) のような JSONP 応答内の日付を、Sencha Touch 2 アプリのモデル インスタンスの日付フィールドに取得する無効な日付ではありません。

背景: JSONP を生成する Rails アプリがあり、それを Sencha Touch 2 アプリの Store に読み込みました。Rails によってフォーマットされた日付は、無効な日付として Sencha Touch 2 アプリに入ります。

再現するには:この質問の問題を再現してエラーを再現するには、以下の Fiddle を使用します。注: Rails アプリがデータを出力するのと同じ方法でフォーマットされた日付を使用して、データをストアに配線することで、Rails サーバーを写真から取り除きました。言い換えれば、Rails アプリがサーバー側で行うことを模倣することで、Sencha Touch 2 アプリでローカルに問題全体を再現しました。

フィドル: http://www.senchafiddle.com/#7qQkb . 問題を確認するには、Webkit ブラウザーから Fiddle を実行し、Webkit 開発者ツール内の JavaScript コンソールを表示します。

症状:アプリ内のリスト コンポーネントによって作成された XTemplate がコード ({[]} ブラケット内) を実行して、コンソールでの検査用の日付を出力します。出力された日付を調べると、次のように表示されます__proto__: Invalid Date。日付はビューに問題なく表示されますが、無効な日付であるため、日付をフォーマットしたり、日付オブジェクトのさまざまな部分を取得したりすることはできません。

私の質問は次のとおりです: 無効な日付にならないようにモデル インスタンスに日付を取得するために、モデルやストア、または Rails アプリに対して何かできることはありますか?

4

2 に答える 2

1

表示されるのは、Date プロトタイプの toString メソッドの戻り値です。

Date.prototype.toString(); // "Invalid Date"

それが、すべての「日付」がまったく同じことを言っている理由です。ただし、日付が間違っているわけではありません。extjs で、モデルの日付フィールドをフォーマットする場合は、次を使用する必要があります。

{ name: 'timestamp', type: 'date', dateFormat: "Y-m-d H:i" }

ただし、表示するためだけにフォーマットしたい場合は、使用したフォーマット、名前付きの組み込みフォーマットの 1 つ、または例で使用したのと同じものを使用できます: Ymd H:i

于 2012-12-26T18:14:28.130 に答える
0

この質問には、さらに調査を重ねて回答しました。Rails が JSON / JSONP 応答で日付を表すデフォルトの方法は、Sencha Touch 2 に適しています。__proto__日付オブジェクトのプロパティは常に無効な日付として表されますがExt.Date.format()、XTemplate オブジェクトで次のように使用することで日付を操作できます。

'<p>{[Ext.Date.format(values.timestamp, "F d, Y g:i A")]}</p>'

timestampフォーマットしたい日付はどこにありますか。)

コンソールに無効な日付として表示されるという事実は重要ではありません。

于 2012-12-26T17:46:01.470 に答える