【发布时间】:2014-12-15 21:33:15
【问题描述】:
我想在模型的(剥离的)文本字段发送到服务器之前,从可编辑的文本输入中剥离一些特殊字符,并将净化后的字符串写入本地模型。
根据the docs,
When you submit editable form it performs following steps:
- call child's onbeforesave
- call form's onbeforesave
- write data to local model (e.g. $scope.user)
- call form's onaftersave
- call child's onaftersave
因此,对于我的可编辑文本输入,我有一个去除特殊字符并更新本地模型上的值的方法。我已经验证了这行得通;运行 onbeforesave 后,模型具有正确的剥离值。我也知道 onbeforesave 的返回结果是这样的:
- string: submit will be cancelled, form will stay opened, string will be shown as error message
- not string: submit will be continued
我在 onbeforesave 函数中返回 undefined。
然后,在表单的 onaftersave 方法中,我将大概更新的数据发送到服务器。
问题是:child onbeforesave 内部的更新丢失了。本地模型和服务器都没有更新的值。
当我将清理方法移动到孩子的 onaftersave 时,本地模型已成功更新,但正如您所料,服务器没有获得更新的信息,因为表单的 onaftersave 是在孩子的 onaftersave 之前调用的。
如果我不得不猜测,我会说问题在于,即使我正在更新 onbeforesave 中的模型,该值也被 $data 覆盖(即输入文本中最初未经处理的数据) ,在我的 onbeforesave 函数运行之后。
因此,看来我唯一的选择是进一步修改表单的 onaftersave,以便在将经过净化的更新数据发送到服务器之前从我的文本字段中删除特殊字符。
准确吗?除了使表单的 onaftersave 函数膨胀之外,还有更优雅的方法吗?
【问题讨论】:
标签: javascript forms x-editable