2016-11-27 50 views
1

我有幾個字段的搜索表單。如果用戶在字段中沒有輸入任何內容,它仍然會被髮送到值爲「null」的服務器。
但是,這種形式大約有25個可選(高級)字段,如果用戶沒有輸入任何內容,JSON根本不應該包含這個字段。
所以,我的問題是:是否有某種方式(模式也許),以避免這些25「if()else」?形成最終JSON的最佳方式是什麼?
謝謝!AngularJS形式。 JSON中的可選屬性

UPD: 謝謝@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; 
    } 
+0

有什麼錯只是把他們作爲空到服務器? – toskv

回答

2
<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 
}