使用 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>
不确定我对这个解决方案有多兴奋,但它确实有效。如果有人知道更有效的方法来实现这一点,请告诉我!