【问题标题】:AngularJS form. Optional properties in JSON [duplicate]AngularJS 表单。 JSON中的可选属性[重复]
【发布时间】: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 发送到服务器有什么问题?

标签: javascript angularjs json forms typescript


【解决方案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>

JavaScript:

$scope.submit = function(form){

    for(var prop in form){
        if(!!!form[prop]){
                delete form[prop];
        }
    }//form will contain form prop having only valid values
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 2016-12-06
    • 2021-08-27
    • 2023-04-07
    • 2014-07-06
    • 2017-04-30
    • 2018-05-31
    相关资源
    最近更新 更多