AngularJS - 将空表单字段提交为null,而不是完全省略它

时间:2015-10-05 01:29:37

标签: angularjs angularjs-forms

这是我的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对象发送到后端,只需将“email”和“password”作为字典中的键。字典中不存在“用户名”和“国家”键(从现在开始,将“国家”字段称为“userextended_set”,因为它调用了我的ng模型中的字段)。如何让AngularJS不完全省略它,并至少发送值为“null”的键?

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

1 个答案:

答案 0 :(得分:0)

尝试将属性添加到输入字段:

ng-trim="false"