2015-10-05 39 views
2

这是我的HTML /角:AngularJS - 提交空表单字段为空,而不是完全忽略它

<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将字符串中的“email”和“password”作为键发送到后端的JSON对象。字典中不存在“用户名”和“国家/地区”键(从现在开始,将“Country”字段称为“userextended_set”,因为它是调用ng模型中的字段)。我如何让AngularJS不完全忽略它,并至少发送一个值为“null”的密钥?编辑:这很奇怪,因为即使我在“userextended_set”字段中有ng-trim =“false”,如果我最初提交表单时没有填充“userextended_set”中的任何内容,AngularJS不会发送“userextended_set”作为键入JSON对象。但是,如果我在“userextended_set”中键入内容然后删除它,然后点击提交,JSON将“userextended_set”作为关键字发送。

+0

可能与:http://stackoverflow.com/a/25230155/2495283 – Claies

+0

我相信这是重写这个没有标准的方式。因为这个,你在后端有问题吗?你的后端堆栈是什么?我使用的是Spring MVC,幸运的是它自动填充了空缺的属性。我的建议是:对待它的服务器端。 – wdoering

回答

0

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

ng-trim="false"