2013-02-23 63 views
1

構建一個包含節點的CMS,mongoDB & angularjs。我有一個輸入的編輯表單,我想綁定到$ scope,以便使用現有數據填充它們的值。例如:

<form ng-submit="editArticle(article._id, article)" class="edit-form"> 
    <label for="hed">Hed: <input type="text" name="hed" ng-model="article.hed" value="{{article.hed}}" /></label> 
    <label for="dek">Dek: <input type="text" name="dek" ng-model="article.dek" placeholder="{{article.dek}}" /></label> 
    <input type="submit" value="Save Changes"></input> 
</form> 

這適當地使用我的mongo數據庫中的當前數據填充輸入值。但是,我想綁定到新的表單範圍,所以它不會嘗試傳遞文章範圍中的每個值,只是表單中的新範圍。 (文章範圍目前由Mongo的文章文檔中的每個字段組成,如果我將所有這些數據都傳遞過來,我會收到有關無效模式的錯誤,因爲它也嘗試傳遞__v字段。)

因此理想情況下,我想這樣做:

<form ng-submit="editArticle(article._id, form)" class="edit-form"> 
    <label for="hed">Hed: <input type="text" name="hed" ng-model="form.hed" value="{{article.hed}}" /></label> 
    <label for="dek">Dek: <input type="text" name="dek" ng-model="form.dek" placeholder="{{article.dek}}" /></label> 
    <input type="submit" value="Save Changes"></input> 
</form> 

所以在提交時,它只傳遞form.hed和form.dek到我的數據庫。但是,現在這些輸入字段是空白的,因爲它們沒有綁定到原始文章數據。用戶必須用原始值重新填寫每個字段。有沒有辦法將綁定到多個模型orrrr綁定到當前模型,但提交時只發送更新的表單數據?

編輯:

它看起來像我的NG-改變屬性添加到每個領域,與原來的範圍來填充輸入字段,然後在變化中,將表單範圍等於改變值。例如。

<form ng-submit="editArticle(article._id, form)" class="edit-form"> 
    <label for="hed">Hed: <input type="text" name="hed" ng-change(form.article = article.hed) ng-model="article.hed" /></label> 
    <label for="dek">Dek: <input type="text" name="dek" ng-change(form.dek = article.dek) ng-model="article.dek" placeholder="{{article.dek}}" /></label> 
    <input type="submit" value="Save Changes"></input> 
</form> 

不知道我對這個解決方案有多興奮,但它的工作原理。如果有人知道更有效的方法來完成這個請讓我知道!

回答

1

從數據庫接收到原始對象(或其中的一部分)後,複製原始對象並將其綁定到該對象上。

在編輯之前應對對象是一個非常好的模式,因爲它允許您輕鬆地提供其他功能,例如恢復編輯並在未編輯時禁用保存按鈕。

+1

這是有道理的,我在角度文檔中看到它簡要描述,但它僅顯示使用空白石板/空對象的表單示例。如果我的範圍中已經有了現有數據,那麼當我複製它時,它仍然會複製所有字段,而不僅僅是用戶將要更新的那些字段。 (除非我確切指定要複製哪些字段,我不想這樣做,因爲會有很多這樣的字段。) – brittanystoroz 2013-02-23 17:58:04

相關問題