AngularJS 表单。 JSON中的可选属性[重复]
Posted
技术标签:
【中文标题】AngularJS 表单。 JSON中的可选属性[重复]【英文标题】:AngularJS form. Optional properties in JSON [duplicate] 【发布时间】:2017-04-11 08:10:03 【问题描述】:我有一个包含多个字段的搜索表单。如果用户在字段中没有输入任何内容,它仍然会被发送到值为“null”的服务器。 但是,此表单中大约有 25 个可选(高级)字段,如果用户没有在其中输入任何内容,则 JSON 根本不应该包含此字段。 所以,我的问题是:有什么方法(也许是模式)可以避免那些 25 个“if () else”吗?形成最终 JSON 的最佳方式是什么? 谢谢!
更新: 谢谢@RIYAJKHAN 的回答! 我已经使用 LoDash 自己解决了这个问题:
private compactObject(obj)
let compactObj = this.removeEmptyProperties(_.cloneDeep(obj));
_.forEach(compactObj, (value, key) =>
if (_.isObject(value))
compactObj[key] = this.compactObject(this.removeEmptyProperties(compactObj[key]));
);
return this.removeEmptyProperties(compactObj);
;
private removeEmptyProperties(obj)
let trimedObj = _.cloneDeep(obj);
_.forEach(trimedObj, (value, key) =>
if (!value || _.isEmpty(trimedObj[key]))
delete trimedObj[key];
);
return trimedObj;
【问题讨论】:
将它们作为 null 发送到服务器有什么问题? 【参考方案1】:<form name="form" ng-submit="submit(form)">
<input type="text" name="test1" ng-model="test1">
<input type="text" name="test2" ng-model="test2">
<input type="text" name="test3" ng-model="test3">
<input type="button" name="submit">
</form>
$scope.submit = function(form)
for(var prop in form)
if(!!!form[prop])
delete form[prop];
//form will contain form prop having only valid values
【讨论】:
以上是关于AngularJS 表单。 JSON中的可选属性[重复]的主要内容,如果未能解决你的问题,请参考以下文章