2012-04-25 49 views
0

我想澄清ext 4模型如何關聯以形成面板。 假設我有一個模型,例如「用戶」,它附帶了一個REST代理。ext js表單,模型和文件上傳

當我要修改用戶參數,我用表格的

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

方法,來設置表單的字段值。

修改後,我調用「updateRecord」方法,將表單中的更改發送到加載模型,然後使用模型的「保存」方法將更改發送到服務器。這工作得很好,似乎符合Ext MVC的概念。

問題

但是,問題是:我應該如何順應MVC,萬一我需要上傳的文件,同時修改用戶的數據(例如頭像)。根據我從文檔中學到的東西,我應該切換到使用表單的「提交」方法發送更新的數據,以便服務器,包括文件。

在這種情況下,我看到幾個缺點:

  • 的原始模型,加載到窗體,將不會被更新。
  • 如果我更新模型(使用「updateRecord」或其他方式),模型將保持髒狀態,但是,更改已發送到服務器。
  • 對於模型,應該使用相同的代理配置來形成,以便我不需要更改服務器端。

這是通過ext表單實現文件上傳的正確方法嗎? 有沒有什麼辦法可以使用model.save方法來做到這一點,MVC時尚?

回答

0

我不認爲你可以將兩件事結合在一起。文件上傳總是與提交其餘數據不同。你可以做什麼:

  • 有一個按鈕來選擇並上傳文件到服務器。但不要將文件保存到保存用戶的同一位置(例如,您可以有單獨的文件存儲並只保存文件名到用戶記錄中)

  • 當發送用戶記錄更新到服務器時發送新文件名稱。這樣你的頭像更新和其他數據更新將在同一個事務中。

+0

大多數瀏覽器不顯示選定的文件名/路徑,我不認爲這是可能的。 – 2012-04-25 12:45:45

+0

您不需要顯示文件/路徑 - 您需要先將文件提交到服務器。服務器將保存它並返回一些名稱(這是服務器上此文件的名稱),稍後您將在更新用戶記錄時使用該名稱。 – sha 2012-04-25 12:47:39

+0

這是過度複雜的:發送文件,接收文件,回覆fileId,接受fileId,然後才調用model.save()。 4個新的行動來支持一個。 – 2012-04-25 13:40:52