2013-10-26 89 views
1

假設我有一個包含2個預填充字段的模型。我想在DOM中顯示這些字段,以便用戶在必要時進行修改。如果我使用{{input value = field1}}和{{input value = field2}}將DOM綁定到模型,那麼每當用戶在其中一個字段中鍵入字符時,Ember會立即更新綁定模型。這不是我想要的行爲。我更喜歡顯示一個按鈕;當按下時,我想驗證兩個字段中的數據是否相互關聯,如果有效,則更新模型。Ember數據綁定

我認爲在控制器中創建鏡像字段並將它們綁定到DOM。然後創建與該按鈕相關的操作以進行驗證,並且如果發現數據有效,則將數據從控制器字段複製到相應的模型字段。這種技術可能會起作用,但看起來像是一種在概念上做簡單事情的非常全面的方式。

你們其中一位安靜的大師在那裏有如何做到這一點的意見?我正在尋找最佳實踐;請幫忙。

回答

1

我不是大師,也不熟悉EmberData中的客戶端驗證,因爲我們的應用使用服務器端驗證。

  1. 您確定不能立即更新您的模型(即綁定到模板字段)嗎?

    如果你綁定了模型,那麼你可以在提交時進行驗證。如果驗證失敗,則可以僅更改rollback。如果它通過,你可以save的記錄。這可能是我會做的。

  2. 但是,您明確指出您不希望立即更新模型,這意味着您不想綁定模型。

    此外,你必須做一些處理,取決於多個領域來驗證,所以它真的聽起來像綁定到控制器和驗證行動是一個很好的解決方案,這就是我會做,如果我沒有約束力到模型。

+0

控制器變量綁定方法的問題是我首先必須將字段值從模型複製到控制器才能顯示,然後在驗證後將其複製回模型。這是很多數據來回移動,只是感覺不對。我還注意到有一個「未綁定」的手把幫手,可以讓我無需綁定即可顯示數據。但是我目前不太清楚如何使用這個幫助程序從數據庫中獲取驗證數據並隨後傳輸到模型。 – user2436810

+0

我可能不會將兩個字段描述爲「大量數據」。此外,這個未綁定的幫助程序聽起來很奇怪,因爲您明顯地告訴它要以什麼數據開始(例如,與在控制器上設置數據大致相同),現在您需要將數據從DOM中提取以設置模型(而不是比我認爲的更乾淨的綁定控制器)。 Ember的方式是使用綁定。 – gerry3

+0

@ user2436810我已經用第一個解決方案更新了我的答案,該解決方案實際上是綁定到模型並使用'rollback'。 – gerry3