node、mongoDB、angularjs を使用して CMS を構築します。$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 のみがデータベースに渡されます。ただし、元の記事データにバインドされていないため、これらの入力フィールドは空白になっています。ユーザーは、各フィールドに元の値を再入力する必要があります。複数のモデルにバインドする方法、または現在のモデルにバインドする方法はありますが、送信時に更新されたフォーム データのみを送信しますか?
編集:
各フィールドに ng-change 属性を追加して、入力フィールドに元のスコープを設定し、変更時にフォーム スコープを変更された値に等しく設定する必要があるようです。例えば。
<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>
このソリューションについて私がどれほど興奮しているかはわかりませんが、うまくいきます。これを達成するためのより効率的な方法を誰かが知っているなら、私に知らせてください!