【问题标题】:AngularJS - submit empty form fields as null rather than completely omitting itAngularJS - 将空表单字段提交为 null 而不是完全忽略它
【发布时间】:2015-11-10 16:17:18
【问题描述】:

这是我的 HTML / Angular:

<form ng-submit="ctrl.add()">
    <div class="form-group">
        <label>Username</label>
        <input type="text" ng-model="ctrl.user.username"> 
    </div>

    <div class="form-group">
        <label>Password</label>
        <input type="password" ng-model="ctrl.user.password" required>
    </div>

    <div class="form-group">
        <label>Email</label>
        <input type="email" ng-model="ctrl.user.email" required> 
    </div>

    <div class="form-group">
        <label>Country</label>
        <input type="text" ng-model="ctrl.user.userextended_set.country" ng-trim="false"> 
    </div>
    <input type="submit" value="Register" ng-disabled="myForm.$invalid"> 
</form>

问题是,当用户在没有填写“用户名”或“国家”部分的情况下点击提交时,AngularJS 会向后端发送一个 JSON 对象,其中只有“电子邮件”和“密码”作为字典中的键。字典中不存在“用户名”和“国家/地区”键(从现在开始,将“国家/地区”字段称为“userextended_set”,因为它在我的 ng-model 中被称为该字段)。如何让 AngularJS 不完全忽略它,并至少发送值为“null”的键?

编辑:这很奇怪,因为即使我在“userextended_set”字段上有 ng-trim="false",如果我最初提交表单时没有在“userextended_set”中填写任何内容,AngularJS 也不会发送“userextended_set”作为键在 JSON 对象中。但是如果我在“userextended_set”中输入一些内容然后删除它,然后点击提交,JSON 会发送“userextended_set”作为键。

【问题讨论】:

  • 我相信没有标准的方法可以覆盖它。您是否因此而在后端遇到问题?你的后端堆栈是什么?我正在使用 Spring MVC,幸运的是它会自动用 null 填充缺失的属性。我的建议是:把它放在服务器端。

标签: angularjs angularjs-forms


【解决方案1】:

尝试在输入字段中添加属性:

ng-trim="false"

【讨论】:

    猜你喜欢
    • 2014-07-24
    • 2016-07-29
    • 2022-08-16
    • 1970-01-01
    • 2021-08-07
    • 2013-01-24
    • 2013-11-14
    • 1970-01-01
    • 2011-11-22
    相关资源
    最近更新 更多