2012-04-25 5 views
0

ext 4モデルがフォームパネルとどのように関連しているかを明確にしたいと思います。 モデルがあるとします。 「User」には、RESTプロキシが添付されています。私は、ユーザーのパラメータを変更したい場合はExt jsフォーム、モデル、ファイルアップロード

は、私は、フォームのフィールドの値を設定するには、フォームの

loadRecord(Ext.data.Model record) : Ext.form.Basic 

メソッドを使用します。

変更後、フォームからロードされたモデルに変更を送信し、モデルの「保存」メソッドを使用して変更をサーバーに送信するために、「updateRecord」メソッドを呼び出します。これは非常にうまく動作し、Ext MVCのコンセプトに合っているようです。

質問

しかし、問題は、ユーザーのデータを変更しながら、私はMVCに準拠するべきか、場合に私が(例えばアバター)、ファイルをアップロードする必要があります。私がdocsから学んだことによると、私はフォームを使って "submit"メソッドを使用して、更新されたデータをサーバーを含めて送信する必要があります。更新されません、

  • オリジナルモデル、フォームにロード:この場合

    は、私はいくつかの欠点を参照してください。
  • "updateRecord"などの方法でモデルを更新すると、モデルはダーティー状態のままですが、変更はすでにサーバーに送信されています。
  • サーバーサイドを変更する必要がないように、モデルと同じプロキシ構成を適用する必要があります。

これは、ext-formによるファイルアップロードを実装する正しい方法ですか? MVCスタイリッシュにするために、model.saveメソッドを使用してこれを行う方法はありますか?

答えて

0

私はあなたが一緒に2つのものを組み合わせることはできないと思います。ファイルのアップロードは、常に残りのデータを送信することとは異なるものになります。ただし、できること:

  • ファイルを選択してサーバーにアップロードするボタンがあります。ただし、ユーザーを保存する場所と同じ場所にファイルを保存しないでください(たとえば、別のファイルストレージを使用してファイル名だけをユーザーレコードに保存するなど)。

  • ユーザーレコードの更新をサーバーに送信すると、名。この方法で、あなたのアバター更新と他のデータ更新は同じトランザクションになります。

+0

ほとんどのブラウザでは、選択したファイル名/パスが表示されませんが、これは可能ではありません。 –

+0

ファイル/パスを明らかにする必要はありません。ファイルをサーバーに提出する必要があります。サーバーはそれを保存して何らかの名前(サーバー上でこのファイルの名前)を返します。後でユーザーレコードを更新するときにこの名前を使用します。 – sha

+0

これは複雑すぎます:ファイルを送信し、ファイルを受信し、fileIdを応答し、fileIdを受け入れ、その後にのみmodel.save()を呼び出します。 1つだけをサポートする4つの新しいアクション。 –